{"_id":"@leanup/cli","_rev":"1709-30aa9b05a36c680994fd63d6bf71d53d","name":"@leanup/cli","dist-tags":{"latest":"1.3.50","next":"2.0.0-rc.73","latest-1.1":"1.1.97","latest-1.0":"1.0.203","latest-1.2":"1.2.66"},"versions":{"1.1.0-rc.0":{"name":"@leanup/cli","version":"1.1.0-rc.0","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","webhint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.0","@leanup/cli-core-format":"^1.1.0-rc.0","@leanup/cli-core-hint":"^1.1.0-rc.0","@leanup/cli-core-lint":"^1.1.0-rc.0","@leanup/cli-core-test":"^1.1.0-rc.0","@types/node":"^14.0.4","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.0","_nodeVersion":"12.13.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-5Ox8RMpDILbF9NneeqYQeQp6gFpIvVyCyRNH0SFglpUP6oXn35JYtGoUI2TBURjq2IjkbevSJldaVWSWN4PSHw==","shasum":"9b06f5e7876d32c6da898d4555ab83ec6aa6d923","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.0.tgz","fileCount":12,"unpackedSize":47877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexf+MCRA9TVsSAnZWagAAFUUP/0O8ksSM8PeUvlVm88w8\nzNAe1PShGQcsaiIObev76FW1yl/TMM5l91gsR8Sqz1IH5Kmt1reuT4PIYWlr\ngtUCggrPXgbqHfalsEWxSm4wU+Pk+sfImXyIPy4ragV10Cun3y/J1J9V8EGl\nh1h1Rmc6WOpSHFmzd067H2j7dgo75x5IOTD0qoQv71qXc+hWHtvHjKZeGDcN\ni+2P1MI08KIhEJQDSCo9mdRttx/WJCR3Tlqi9m26bvaesHUSsihT/sMz5T3C\nNZFQBYBAM/+tBqaDJaZTsy1rs1IC4Q5tfH8tEITFjAZR3ISHo/9DY2eRazEe\naKMcdA59PFT3zB9zvRHWSZ/9WbrfJGwJb2L5ikLhQ7WJp1yJeqgqFthsDzwC\nGbhjYeRAeVM9B4H3MxS97d0VZ5qP2MmyOQql/FwrA6k2WUpcF+dt8BwXoQer\nJgRYBUWh+SPMSxPgMYrKhfnCuz8Bdajlyehi7EA7d5EecD+uTgkWmoGioy4Q\ntIiaiv5c1YMfCTPeBYH1iTpkbmipasav9+oo+f/CFiDaCkmCeDJioDpO2sK8\neFFr6MEzndGo1AQVVSpwAJNh6WL2r4oCbuqoHmhulQJks6vflHNhbENnaYkv\njpANiPrEmV9G9+uOON4E2lmORWGurUoqn8s6cgOb9epzCrl8XGjjPm1csKK8\nUvTq\r\n=fb+t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChuYeuZe9l1rRU4ntcbMlmCyuey8PIxuicPG5+VtccgwIgZ1DmdoSJmmWKEg8anOKDAChDVt3WKUUIirveamo9kOs="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.0_1590034316310_0.5622776272705656"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.0\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.1":{"name":"@leanup/cli","version":"1.1.0-rc.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","webhint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.1","@leanup/cli-core-format":"^1.1.0-rc.1","@leanup/cli-core-hint":"^1.1.0-rc.1","@leanup/cli-core-lint":"^1.1.0-rc.1","@leanup/cli-core-test":"^1.1.0-rc.1","@types/node":"^14.0.4","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-H6Cf2y/7K6bU5lACa/y3VPaXDS3srJnO4gU1Rwxu/1sHSJSp3SY3dbDI+CcmYjaWZEvwyPQ97IWEMX87lI2vlQ==","shasum":"7ee6da00ce8252ba4260b96b52776214f8db0b3e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.1.tgz","fileCount":12,"unpackedSize":47877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexgYDCRA9TVsSAnZWagAASKIP/AzFu43a9O84SGtxcoQU\nIhWvNzwtn+TdFBJW9FyH4Tze3GY89tm4PIsHsVc9di+j3beteZTSZYy+Zrhh\nr26vF0P68RH2e6iqxgYvqb8HM1VEonjG+KnQ187vtbIBJMVqqh8r+Kkl721q\nVdQqQkQl5uok9IvDpY5PpRynD0+LJmPtJVKNpfMnF1sckQ4fAmCvngoXsjqo\ngKfWDRQUOPnaCp3DMST1bJDRqtCbAi0Mr9wsJKs/XpaOn/QDYRK4G75tJgxG\nuhxOFxUJW3DTL9ZZqw3WU26xlwwEg2JgJ5fLnQb4pGg/CT40L+CilUGUQnlY\ndtvcxs6zzH1GEkLaIKvLy6UsbyC1ol4a12kQo1jlsbC0ClGb6ujvRsVolYqR\nTcLG/scCRXWt422heVPUJ3uaHfV4tpYsPEQuXV4ySFIDBMLkFK/41FtcsraM\n/6vOCJq5E/XNYq1g8a8b9fV0jAWEQdb8lKiROMAWZEYdKzO1NcICNIMM34gR\nS6yWyNxJMpA0JxQrBD31uCOCVzTrF1mxdyPI1LN0HbVn5jkdyhgs1ModPJuv\ny4w+FqldK+fln4PQsa/nNKjo35eJOMsuPKccIvIZ7r7wsTVGqF/0C7gJlBTp\nk1wCCvxRPYahbuiRQsN4fpyyN6Di2XeL/aSxUQjyiaZwfzv4O2NeaJfejrrw\nq5qM\r\n=1Ofh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB66HukMa/Zjg7cb5WbHtbyCgoIysMzZdPbd5PoVQrDHAiADbKOzfvDkXlWKt0aBnJlsUfvTwp0E1fS1yiVi9eOMCw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.1_1590035970833_0.2279615315220298"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.1\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.2":{"name":"@leanup/cli","version":"1.1.0-rc.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","webhint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.2","@leanup/cli-core-format":"^1.1.0-rc.2","@leanup/cli-core-hint":"^1.1.0-rc.2","@leanup/cli-core-lint":"^1.1.0-rc.2","@leanup/cli-core-test":"^1.1.0-rc.2","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-JI/BpVcEwMosTsERniGiOSb0ejRJYtKmo3Dkc0RMV6MJ5/GHBijKSRhuTnAfBRN7j731v0bmUuC0gN9S3cdxLw==","shasum":"c40c9acd5362a8a62f2a843dfa264245adb28fb1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.2.tgz","fileCount":12,"unpackedSize":48684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeyK5cCRA9TVsSAnZWagAAci8QAJj5+8olmp58PPGCkke1\n3LtQ0zhP82pYCXvOptWLnuNt7LFbxbx3zwkVrEz0ibNR/GT61wk2H+0l2O+D\nkoG9TCLUZb3qXD7JXUbI80A3qKNFtmTsJqNiQbHYn4lSfuyllJPHClHgrchP\ncyobWS4m6xWqRBHHeGhnE1eI/YdUHf8WWiggrWsM1CfxfOkaxMKVLG5r2QGu\nRYDGZzfyfpACB2e7c4BPcnHOndR3i1x2ZRA+LpzJFyL/+w2qn8a5wTzIFoXv\nVyn2/tto4g6Q/ksSP8H28KG5fFnsuUjBP1V6+koAjwoiJml6wLiOlGn++Xs4\nOKVlbc+C9eC316E2BqVk6Ubqt37R3ogwXnr7Z0JoWHgTGJHQb+YZke6bKfH7\nfGsj6gJ3rUDPnDi9A2jQKcmN/WIbE0/BkCBYIBWiKEYvWnH0hQH+Xe2PNvI/\nM9+A3B8bI2lha//Th6jRlebOvub3rjaiAbZtytLq8UbSbUrFDsx70FV/XZSt\nLOQMg3AkCsROG3iWYAA516rY2sTbIQlqLCsHpiAVVD+TdWCxd8rYwd4AGe7e\ntx24C1bK0F1iH+el77M+6u01sDOvvHHDlGtl8/sAdmEGrediwNiEj5BoPKZr\nAcR9Q1j/BxQYPH7G7kZ9JNVqDmfrhVmuLeaBWdCOArf9/yGYEQq+f7fS2Jvt\nrVE+\r\n=9FY8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDozqzqKNVsyGttrCb4lYu4z8g16gWB0dh5qIOKMzmttAiEA6gDCb8VBEqHRlS/dv9dNvGXn6UHDArJe7p2YWHEahP4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.2_1590210140132_0.017230720476332007"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.2\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.3":{"name":"@leanup/cli","version":"1.1.0-rc.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","webhint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.3","@leanup/cli-core-format":"^1.1.0-rc.3","@leanup/cli-core-hint":"^1.1.0-rc.3","@leanup/cli-core-lint":"^1.1.0-rc.3","@leanup/cli-core-test":"^1.1.0-rc.3","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-0aCbIA9fcoYFpcAvEUyOJnUE574hyxcX/ppxw5DPmNsuuCe0/HsQ8FNn6iZ/VUThHd9oK3A7qGBuap3mJDOc+Q==","shasum":"71389dbb604a8a9073e74f07d9f99eb9289339f8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.3.tgz","fileCount":12,"unpackedSize":48684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeyLOvCRA9TVsSAnZWagAAElkP/0iis75WH1bq1Lw1EFfQ\n82BHBgsGjmCWD8cyR+tDG+Z+IvwjsE1WJS0T5lM1VxRSWyRppl7dLdeIypT0\nWE6pFXsD/vkZz6AQfPulrEHCQaZ5mDgLE3WXQLVV1ZNh9d3i5NhAjp3ZYK6v\niBO33lkQZEjAi4Umpd8EtJ2nywNPMmoEO2Uhe/d5URMjIZ29VOuraJu3VvQ7\nJLep8js0WUFssDibiyD4vgE0JJMBIxSI1+ugITn/BRAXKTOfu/dA8jmKf5GZ\n+DDNYpO4le5M8EV26UF9xcxjZgNYVMxrCPwFKQIpCiF4Eeqk5e4N1LnthYJI\nVeP3i0LAregdlkTNzLaJ8gEd+kXb8Juuc2oN6K4rEKGtZXMmaxsN0GouViaQ\nqz7SVT4eOw0lEBD2xELvwWDedYxfnkfmXwZrD42TJ1tMPISST/RCAZSKKwXX\nQ1KtcU4Akw/jpnrIK3ZWTe/xcUp+Gebl/SVzA06hRLruUGJL3XZSpsTOkiQ4\ntPwsWbq/2G4e+gpsSjcpIU1R35YMEhs1ZGYxevhxzIIa0UPYiVcTCjFDfkda\ngXBJz++wnN0Zdsy/d0yz+edd9uVMme7REOEleqi64dYZv8J5m09pS1v+p2td\n17pjS1hbW24VH68CXR9bRAfTEh8qZjDHLjKra7Tbe/uVQrprVaHTPH/jA+23\nbIuB\r\n=Q6EK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfK5vYOaxmRQ0XEOJZ5tLYODU/nlOXRQ8QhDmwY/pSnAIgHX+iTi5VI+/b4drvlTMPtwLl3v8pxznzk+kLVCofT90="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.3_1590211502769_0.14641265557247474"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.3\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.235":{"name":"@leanup/cli","version":"1.0.0-rc.235","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.0.0-rc.233","@leanup/cli-core-format":"^1.0.0-rc.233","@leanup/cli-core-hint":"^1.0.0-rc.234","@leanup/cli-core-lint":"^1.0.0-rc.235","@leanup/cli-core-test":"^1.0.0-rc.235","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0","webpack-pwa-manifest":"^4.2.0","workbox-webpack-plugin":"^5.1.3"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.235","_nodeVersion":"12.13.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-cjZbqNIduagiRp0P6LaY1j4EFzA7JwStMWmS6l1yybr0+1zbUWHdNKYK1rdw8Wjwk5FJ/nqaHRl6LoPal4DF7Q==","shasum":"f53099d51dbb53dfcbb26be11be8143e33aed7fe","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.235.tgz","fileCount":12,"unpackedSize":49071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeyNDGCRA9TVsSAnZWagAAh/4P/RRT8uafmMVFd3Xw/8Da\nCcbqoAJQlrfyoNjbXL1D5gJy2jdcRSGhon/K5Bj/7SYQZvU7GfcVXqGaMJIM\nj0hVZ3iGaJub7bw2CZbh95bwBWM3s10xyzscmZhWevrg6SV2ZTLv9AjCvBba\nZrGyBNx+KWGNf8PjYJIwkkaQIQLnjVmPp8K/AQLKV/GII3nRTSWyu0El7HBC\n3djIUbdRjMobi5b06g8hZDy+PGR63Oy3qG2WVPyPrJLss+L7BpNNLetsrYTn\nnzq7dlmBp2wKhQxajl7cjsMe2HbXn8w70D/KEC8h/JayqRnIL+Lo3EW4mH4l\nP4I3Sj12hs1SLNfAAaKFF7ASuhWnZk7wH+0I3OTQCHHro5uf9bb+Vqpdb17H\nuRKfOhVp2WvO2m4vkIIr+AZDs8X1K09as2pwe1nPHadAyMDDIhy8IiQA52MT\nZ+wm/gSDP9hi2kl2xqrbDkkFzKj7+ei8TXT9DkZwmZ4bArURY0V8hso5JCM8\nALf82Vj3+zRDZ+d2a4Y399qIpFsL6eQfXJls58NZzSkmSHkvrPXioCW5E16n\nB9C7kmcl2cc9PlCAD0GTdJWW9Zv4a4uuSYkhFF0pq8BHVCT6Ms9HQ9Puz/o4\ngq3hmZ4WfVW+xqTuViWuVVTaVcjgx5D2wT601ruhSayWWpgFmI9Rg9GiRgwD\ni9PI\r\n=YoWL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEJz0wgcNQT0dFys5nhD914zz86uoqeTBiQwOZD+QvjIAiBGy52XGP83UDibW2eFOZFWxenAUTLyxYmIqaioVUGQfQ=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.235_1590218950217_0.7831005528618891"},"_hasShrinkwrap":false,"deprecated":"This version is no longer maintained and will be removed from the registry shortly. Use full compatible preversion of ^1.0.0."},"1.1.0-rc.4":{"name":"@leanup/cli","version":"1.1.0-rc.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","webhint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.4","@leanup/cli-core-format":"^1.1.0-rc.4","@leanup/cli-core-hint":"^1.1.0-rc.4","@leanup/cli-core-lint":"^1.1.0-rc.4","@leanup/cli-core-test":"^1.1.0-rc.4","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.4","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9e7lQcWRXIvEGKW0dKEcx3Fl5JlfdgDPm0izMdchTpRMbR/TZ5NaDlJN01eFykMDAkq7ckVhkUnsfsgzEpekVA==","shasum":"030626fcc25c01888a135500abbb21e56c09a47b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.4.tgz","fileCount":12,"unpackedSize":48687,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeyNTFCRA9TVsSAnZWagAAlscP/jL1g8e42UBCFQ5nb7xE\n7ryUpC7pRSl8aCH+NUXjJs3JjET3KWfCrX8AWM5dcs6e8DgqEbha1B9yQrHE\nfGmKybYo4w9h3Sf1TKKcnPO9WhbWuCcJ90IFlw4gzVy4BxfdUE838a2qruld\nK8OYbNoSi+VxdySP0Ke0SM1d3Xcy//W+6S0OPqYApdRpVPE2j8pl6VG2Uoek\n7pGVYkTAMyHNdK0G1nlSyFmpGnTIPjquWdYnBA/Qzf6IweSw5bW9W3Is6i7F\nShnxR/C34pyrmAcA/vBLz0BMk957PtC83WutewopTlaRFOylTv99zv2SjA89\nk1Cls7KfbGC4WFHrac9nT84UktmVdKy8V2iHDu27ADtI64C6eyKzE310RRRS\nX+yhdRWaWgCeq4vNYQETZc7/PTKQvCoglfhEhdDdAsd+vfA/wRYYf3cvZpfo\nmjGDbr8MFoiU1RDmAitwd1vb2olM0Q4USQaHHmcrXLDWvvn3iaZU8CDtrvTo\n5MDm79EVsWfTtx3dDBWTn56FQcwCnBQAT0uCTxLTSI9vGwqWNHYPfJew9jU0\nlt6/rnLcQTX92ntT5MfQwQF5Nf+KmiMvrnZ+9UrwhkTTl/qrWG0MUWbfUt9Z\nEgEONO/aqyWYjYIBkcgHcCjV3/rQbh09dI2XNI0ZOaQycNPcnq9KjxU0DkGh\nAbB5\r\n=5WE3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEHZsLx2OwfdGa3mP6xIzg7SNcoGU9wnejm34Wk4tahfAiEA5RQdyJjMM9r0WAFjLL6cn1GKh3jkQAUOEcWrUmb+rw8="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.4_1590219973092_0.3295232034262179"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.4\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.5":{"name":"@leanup/cli","version":"1.1.0-rc.5","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","webhint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.5","@leanup/cli-core-format":"^1.1.0-rc.5","@leanup/cli-core-hint":"^1.1.0-rc.5","@leanup/cli-core-lint":"^1.1.0-rc.5","@leanup/cli-core-test":"^1.1.0-rc.5","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.5","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-GwuyTM6duHzDlGxswjPzuFwz69Hh8dYPgLItkSeLk2hs3oAI6Lv2m5HZKSEmmd1YJVkNFv1yP131CtFEXV3s0g==","shasum":"e804df964fbd58e2239e2135726efa0b6c668347","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.5.tgz","fileCount":12,"unpackedSize":48664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeygGSCRA9TVsSAnZWagAAibwQAIKnqfnaOq5OKHxOqRw1\nSpWXhlw5RIAezpY5lgAdpNWdmcaLpdQYtzQ8lmNfDWc7LF3pE0LbYm3e5AZT\n9U92akOQx4wDbBfOX3OWpfG3opyuWTA8NhYK3kTD+XJxv5b5cg1ptxBRg85u\nCE3GpJ+GebGc8rVVrXQ5D31/M78ezzhMonoJMAGVOkEU27WmpFvqJs49USQU\nJT09PB1VurhdPuWypLotJ8RSD643cNHj79kpZ6kHctbd9+McJM1J9MeeePFg\nuzNHIFfh03Dm/3BdKqsEwN3aO+udTCjXPWa61t63/+J63Bf8gSiIy+BQuidg\nU8PdCJyCtwt49eYaO4Tdc8rEEnwJm/bA8u12Xy/lf4/+912jUWKOn6phfB9K\naaUtM9HMobhE2Mqj+Bj2V5YLhLQdna9KmnHsYgAm1ZfUsq6A8c+I2pieHLNC\n+BZQz6sACklXQnauQ1Ttco+OH3ZplX5PeHIpCmnUx8VGtgVBVPdwHasb0cZv\nTYiN9J8k9iuuM13716Skz1ukhJ12UZo/13rWWvRMEO5EOPE/GEm19Po+I5NB\nIpJXLC0ba1poRUUEloDR5rHdYaDRgDiq88FTgOLgoZTHCXMSz2kaLndCfmJq\nrIVbR9NDX9QOdp6PnXdqPY8Y4S4GIWtMPA2BXP/UObGUlirZJ4Hh4Cchtyl/\npmMD\r\n=RiAZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuchwXH9Wjlm4duPv/LbEbLde3SqAxNbahnkjq8D77pwIgG+vefIFnsMbWOKN+ABNmsZSYfMPa9eUSPaAwUtifu80="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.5_1590296978103_0.9522728433558973"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.5\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.6":{"name":"@leanup/cli","version":"1.1.0-rc.6","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","webhint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.6","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-hint":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.6","@leanup/cli-core-test":"^1.1.0-rc.6","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.6","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YHmJGtKr1sRLzQ3K7jivoqRtOBWQeJRLDHTMkS6+grijBhPyR9R/vsT/Flp9MZSTD2Evt2vKUClynDx7SIOl2Q==","shasum":"bdf5994f6eeaa5424bb924e7afbf59cf66ac3507","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.6.tgz","fileCount":12,"unpackedSize":48664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeylVUCRA9TVsSAnZWagAAdfwP/2DZZUSJZjtWVMW1V/Hw\nM6akDC7BFSGfDQGBlmkSmtFxFSuvVCRJbpUCnil1mr2pHbr5fLgYi0Sn3qRy\n69VNd54tQtrDvYKzFHIjgcPnjPJnjLsuimqiXOYSnKeeh39H8O5i6cAfWlfo\nvC4jn8oReQ2hTXMHaoic8EAnN8KigLPJKtIl5Iy/nT7qomeQLGhLaLO6NegZ\nvs7phyrHA7COXeQNRFr9VE2MO1wJkKyRcoTpQ6NljFJgnnKb99XesulwAy/M\nXDIUNKJTpowD8LVkmVb1nTTwPu9ZVoTXOvIggzp/JHQFeuqDSGUBugU7uKie\nnFbs65YwSxGJRN+xhsdMmkBGvzYe0NzQnvZikG30/PNLxP8+KgaOGO8r/bF7\nmokk2cEpGbOCCP42pD2WKkfmCnD7G3n45vKJhPgp7bfdbQogztICDWCj0pX8\npi4AZLx4BcHMX/2B4XAHIW1EqmpG78nnyMyZC17VQM9dN/j5EBVVRxXiYG6W\nLp8B9goAs4fO97LaCe2+ROTnjvuERIKPzLHBsj+9ErDGlnW9TiV5EXuP+qew\nO7aqDKRadGi7BlyNWdEABmmVtvwXrVGGllQjIsoqpZN3ITPOXTk6z10Hic8c\npgglzrdD1Do+rVZTCwc7bQJzVuGFYH3pvVWI53EIQJEb5/3p33u9h5kfJE1w\nvzEQ\r\n=VrHs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGBzgHknPXQfuMmBZnqm+vvLZCVuMB3epbqHRQBuBUN4AiA32rZDVbylnAYOF97I1usp23GqhR5fblq51JGBO7qTmg=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.6_1590318419555_0.5064783479297019"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.6\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.7":{"name":"@leanup/cli","version":"1.1.0-rc.7","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","webhint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.6","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-hint":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.6","@leanup/cli-core-test":"^1.1.0-rc.6","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.7","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-S2mPDjMY/T9Go2kjJIlTH+4xwtRtmwPEen1KH6HoC41HOQWnimsa/o1OFne47XV0d+t6IaQqiPEZ6xjksuuW1A==","shasum":"d0076f5822c27b8a07566b119f07bcb0ff3aeddc","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.7.tgz","fileCount":12,"unpackedSize":48664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeyzJICRA9TVsSAnZWagAAQF0QAJtAixfgiFyyQdmYBBm9\nn6ojZi+/YYLTN6QeMCkirDpi9JK90Iae9Pl4mZGyCfUNeBuCPbAIVqAQfzgu\nLEN+/JwNg2TOD/Qqg8+lja+cqVVXHw6KVqgGKaE3qUWmxhVzmYCVEh+MQySk\nBeIA15L3qjO+6Pvhldv4eI0jN1Gm86gED/ZAjpw2eqvZUQjX48JLyfBB1rDe\ndtC6rKVBdpNWw6pV/evC/Me2XD6LhZKwYuxUDXKQWVWhgUmxo0qj2nzGNWDR\n6n1vieUjaho+HMIZbkuCHg3trZ4vi9LM+oTA+qJBabLxwYeSGc6r77dc3NLR\nxkXA/2edeEa8u38bXOyvqnLVXOnBRGwmQfJchlX53tQCXcx3havdHP49fXX1\npjbBpLJnce4g284cRHyycFi5hfLzgdAA8dc2Oebwgh2gF9/hofLIkVTjN1Iu\nYSrGsicEcuVvP2YawJ0XkyVWdX0DPHK1Icir/lhNoFD7EN4zQ5QrRpdAWFd4\nmnDo3A+wExakzci5B4P7eUxb112rq3PqEaZesTgf8rlCgohmFrPdZ3f+0Ejw\nKPwzlZMYfyfalsYDVUkiQP3Ru7U86vINmcYlMwU7h+wIuvFS0rTDRQL59COK\nwgjT/zZS7QWX5ozALJSinTaa8b39NlNR81druTxuQql/NPN6PdYCvEPJq7uE\n5Pio\r\n=JG1A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHJz667aQQX9Zx3DgdEnoIxY13ND4a1s1zFsaCmPw7bnAiEA6a+MyQbuvfo/scbBvu9ZN7K1/5MCMLNXvO37lYjYTZ8="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.7_1590374984220_0.4040210775629902"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.7\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.236":{"name":"@leanup/cli","version":"1.0.0-rc.236","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.0.0-rc.233","@leanup/cli-core-format":"^1.0.0-rc.233","@leanup/cli-core-hint":"^1.0.0-rc.234","@leanup/cli-core-lint":"^1.0.0-rc.236","@leanup/cli-core-test":"^1.0.0-rc.236","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0","webpack-pwa-manifest":"^4.2.0","workbox-webpack-plugin":"^5.1.3"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.236","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-usmDh/HJvcS2WjeiXsdHSJX/+062PAQPvWEdum3hIxJjDf1VvyKc/1VVYW/OOfsGty0clSADZr8Lx7ZdWoUMBQ==","shasum":"399f1c12d0a63f65d49ca242902da18cf2ef96dd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.236.tgz","fileCount":12,"unpackedSize":49071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezL5aCRA9TVsSAnZWagAA4vEQAKRx6NhVwjbUkzLZa8XF\nX8H61jTZoanfMMB0JIsli/3qi6pVB41nUnUZil2Sp1JoqXrVCXImDDi8hFRL\n1JNp7hTnqzGVS4glkGeQUtdX/HMxuvtbgBDg0FCF4/miuE0dSGM21idhSV1N\nF2BhG8IsxFhU+w7PZ+UTf4aNgMtuE+6KUKeirmyBG79NcekHc7kNHDzmkTE8\nNssq8fmlca7HQaxAmFwFlE8Wz5ZKw7xI9Kh4MezwZGc+yXlfcESGZGHDV4Pa\nax24FsNjEI/T0ZFQdQlossDcQGbMQRvkSnu4FdQrv7reypEIgCf6FhhtuOFd\n3H44S1bGbk4zQMDANn0GgTf/h4T7G+WdhF56KyKATSD/fJbipZZMZBs0E2nx\n0saSQsf/hUAAU+uogqHt40bNOLmLvXiFP/6Aa8zC64TnM7Oc4gwRhjxBxWCz\nU4opYSJAXSlnim4oLppgckQYmRuAmWAcvqwzC+9ykMBuW470VFAUE99kJhuR\nh4ow0KWYfoz96wvn0vwrBISsPqcipWrZvXBK6jXaKYoa58ZwOHAEcl896bl3\nEuF4+KRp82q/xFSSEG4GYWKiQoYnpMa99n/RTFlLpgKCQL8jy384S5dTfyUQ\nmhnfLBkKvwsOTMzI0JvfekcXTmN+NxEciHcNrfQCmxzjz3Vw3IH/La0TUBI8\n2+O5\r\n=ao1S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBKdaYXz3MCt5xPGoUR2NYOXE2Y6IJeZsYXfKmpIaDp+AiEA0vgmLDab3sK3iuglzsMbDz05H0Qa/Dg/WrKpBy4I2Zk="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.236_1590476378191_0.39384266060182505"},"_hasShrinkwrap":false,"deprecated":"This version is no longer maintained and will be removed from the registry shortly. Use full compatible preversion of ^1.0.0."},"1.1.0-rc.8":{"name":"@leanup/cli","version":"1.1.0-rc.8","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.6","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.8","@leanup/cli-core-test":"^1.1.0-rc.6","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.8","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-HuyZx5FMvOlfx4laDzNIcnqvn55byOjlMXnMwZ/lJGkWi7Qu1u5C9VSsAueseU4H93LhjW2L92ObQ4d4CeHt7A==","shasum":"7c9934104e95f7167239dac4e577c98404bc7689","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.8.tgz","fileCount":12,"unpackedSize":48596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezNCRCRA9TVsSAnZWagAA1e0P/RgoyLVy0SsdHl5FVgWy\nFh6BJTLcr2kEsIYCj1oxdRyyTp+Z7BZ1brZZDNGHy1WjWxmsJW9NR6/BAIuF\ntVdL3kl/wQL8Cw4L8/iFQvT/fmTatiejRTs+PUaRwugVNqAZm06g/OEa0d/F\naKG1qOU3xgQwRVakTtxSzwLc2Akv9CSkm6NNHzkkhY9iltxRVkWY7OVvaWg2\nfYOm01jXC7iU+bsO6IS+eF18sJR8xayrKhtS905xMhfLWWhgpyFCWgx/EZPT\nZYEockCusMCbipaaWPTzVcLlq0UQheWkwC7eZjBlH/Ywre2fa1vqXtUkspbQ\nsY/I+EXdTThlEi2tdfV1/re/Fx0I03ahtXit8gjcr6hbUToEywUPtviFtM2W\nEC8ohvZvopByycEH/cMcqMO3QBeclO+yAF4nOAKSsUAiyZpOXqNbz9OZK/OX\nrSnG+2gdyxmWBVG4E5GBZWgiPhvZyyKh13DkT6EPcOa3DXOieQmgyZchJgtX\n8jeSHkw6VBKM0RH+WLy8jT8WmZeEAuqYdB6WwDlf6SRg85qmvGoaSWWLajj0\nGCA5RXitzXtj6o+YqMHWB8xZb3qAcDYXLVNH02jCONXnjrm7vVdGaySETUyI\nC3WLlOGchd2kfypoVpWiKnuDDskm1w0P39PobTjGFALB0H7RQ3Iyn7S0izdS\norhh\r\n=Y8uU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdAzkUD4zp4yarlujAPmpTdx8n8UFSahNq62JcWuAGzgIhANRwHGS5beSii1MalWO/6UVx25Z15b7Rc+S/zztFwCrA"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.8_1590481040651_0.20961802061144064"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.8\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.10":{"name":"@leanup/cli","version":"1.1.0-rc.10","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.6","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.10","@leanup/cli-core-test":"^1.1.0-rc.6","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.10","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-AWFBSUfJbfIHhO2g65+LwzTNmCXbvoUbwYgt7fmqPyGEXD26EYyBj4mOPYhZ88JAOn5kEiCZmELCCBbrUc1u+w==","shasum":"cb297dd77186aded8a41ed9444d0f85a82490d4a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.10.tgz","fileCount":12,"unpackedSize":48598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezXe8CRA9TVsSAnZWagAA2SoQAIxkdKIGRocycTJfNcE+\nojpVqO4pNZ6+AgW3sQMDQvI3n1QZKnYpe1fG4SCb0llNflx4K20YDhxgCkc3\nTN9pOfZ7FbDyZSPl7GafyR8TR7l8ICiRsm5QRzb5NrG3UsbodlDHkQQjVBqD\nJ6lkA5e1X5P+JHPqErcQddFDS95b3fv0rzPEsnh2yDk91pzJT6h8aLs4QWNd\nAtTWlLXADN3nBwoGWBpPnZPlpMXQ9Aa/VGcGlMYJbenJFF88zHoKH+/QhK7R\nFQnP/BpCH6K9bsR5GEBV7yEvpAFNeMIijnz/M5CDAriBe84JL8z3koANSbkx\nHQoFq1p6Mb7pRoD0+AWnmHKRKUIldLNhZlpL86qtkm7P3U0Yn+PSS0PYa21E\nietXWb4iWryDGYN8FnELts5k4sHtxbw1prkethvqcTGPxJkNnqkV3betPG2H\nrDx6xLGyiFIzoi/NhCxKNEvHJgMiIFX1C4eM19g92bEPq3jjYneQ4x7mCimT\nG2+q3y41Uk9iJnTjYethLCCoQlPlEzYOIaWWPVog9UvB0wH+MtjhI0jy+vly\ndV/QOjkk61+uak5msQ6TyQgPcn1ehQ1TnWuNDbMuBjlo4fYTD6LLWqlF90hR\nBkRtNHvRzqdSIZNGWOTtylsmd1ILFzns3KcCz50XrDxiVtqskGiIGjmnnOkp\nwLuY\r\n=90T8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDP8oPzC/ghT8w0E1HAVJOh1KR464ZEdfDa6p0CLuhKZAiBzKlk08Y2kp7qZX9mgboYs/5KgLPynAc9tCogPmHxSYg=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.10_1590523835473_0.26381865424501094"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.10\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.11":{"name":"@leanup/cli","version":"1.1.0-rc.11","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.6","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.11","@leanup/cli-core-test":"^1.1.0-rc.6","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.11","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-McIe/hYHW7VLv1MmPiMDvCVuWOBR7OdMkQN5zVJ6tNg/lkEvCjr0sRhYDDo5XUyu1aDau0RJEDdVb5ZaJ8CQdQ==","shasum":"6c13645070d0d0bee2b3148033d094b1f933fa21","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.11.tgz","fileCount":12,"unpackedSize":48598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezXkRCRA9TVsSAnZWagAAIYQP+wRcsNtRtm/rSTl9KlRN\nrJFWRSbLNe3mC+uMay1Hr2EgDOf5WanuBdba0etIueHivDhY66kuYUGV3Jwm\nS8lRO74YW/dqzpd6EKrfGKds4KxdhA+fZ4LKHQTYNCl77P2Giae2484Jweh/\nUyQAu3MMhFmybsg8V0DplABZyb0O9Th+oof4zXNUvAbbl2iqivZKIiLr9iBg\n4y+PD1EL2//Gv5iUiryMW1ZLLqtdn4XJSWI/ZQKk/qX4cyB4642eqOO9zZc3\n8X4nV79hlXOlVVQ6ZaF21QKda02GuBWOUpFdvS/OqEGbR5Sou7+pILJID5eb\n5IJEYKk2J69ZoLgv72jtwKWJB37ItpyL5Zdd2Hois3Oc8JFuMJzQIplqk61f\nK+Ehl0lOQ4IQLLHv03tN+w5BttJMO/mfZBhzFZZ6/GyTMRcggZXL0Q7KxrPY\nk9PaBBLFSrdVYq469T2nwDF8q/vn2ykDibCUjpqXg15qOJ3IPackI+DyVra0\nAQtxQyGMtZLt0mO3oWFefe/X+l46H858Bfna9ftFfD+dUN3jvFK6hnEaNDLp\ndkZiZ+UdM/6T66rxzWYD5+2lR77EWzbp2+DQNSLNpR35YORS1u1F7uQREG3d\nicVU2EBTwUTKq4xIHfBwkOd32ZdfNA0Ia1X8X0UhqEFDr6JUTO1cYoknaOvh\n4tcd\r\n=jfRi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDa2QqTUx/eojRJNE45AIxOi8NOUU4p57G4HN3yuz5XgIgLf+ElCNOlxiyZDuWiDUsXiPZJz2v4FC2vXvLq0INjEs="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.11_1590524177327_0.9846322424572338"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.11\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.237":{"name":"@leanup/cli","version":"1.0.0-rc.237","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.9.6","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.8.0","@babel/preset-env":"^7.9.6","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.0.0-rc.233","@leanup/cli-core-format":"^1.0.0-rc.233","@leanup/cli-core-hint":"^1.0.0-rc.234","@leanup/cli-core-lint":"^1.0.0-rc.237","@leanup/cli-core-test":"^1.0.0-rc.236","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0","webpack-pwa-manifest":"^4.2.0","workbox-webpack-plugin":"^5.1.3"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.237","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-W4DSZGFsdCpefVGZDm4VMJEy1ydeDm1G4v/Dn4UJpOjKgczJANor6/zErZAl8dMpTWmp6tpXO+Ev/29DYLj3Ig==","shasum":"a2d54c9500a8164b736611e2c896611cd8037835","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.237.tgz","fileCount":12,"unpackedSize":49071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezXoOCRA9TVsSAnZWagAAh7wP/0sb1PcVWWHQt67H7W5q\nuhLtaOXVDUOa3M5urlu6ucPPzzaVpjVUDd8iIfNfl65m2it1InHPU9ONLYD4\n0G6YI08hMWzQqeNDUD5GEsHEGontAzFXgTOLtjQ073oD3fsZj5PcjqsU03Ia\nnqwpSLSSRTszxyIPFkgHhgo2ZH+a0mcpdKVPPA0QrKA2INgmvxkhr+Hmjo+g\ndiDsdCUKOu+BGSa0+8pmepb7NcmK2Uo9GiZrkUZPfTZ0kZPBeS5rbim/JCMA\nPLD9cvRxFoNGQJP3nNgwcRRtal1nmyzsVHq+gnol4ffm8ZRO3ao5f2ySAgPp\n1QA4pqs8CdUJNRkRhN76gTK/xOQ6R4TUFI9yP66yZ+5BOMLhdSkZVyqHL2FW\nHXxfyz8hAvYt9L7jtz1F8D+w1kCZ9hSJ10abTXezG1B7RXGJQCT92u8rpn9V\nGLdho0uwIwRYwOs5RozSq06Nq9JqqghXbZHe/CYpfbm9XZ4q/eELQK7bSFe1\nnldwPEoIdvh1+7WXGKwOasr3WDxjLBLOcXwvJCGbLvAzOQVPfPNrs7iDhvqK\n7qWPpVXiSzbHX95fBuKy+Pf9JdtctTLX8UPL05Xs1GoWwV8jYELhByglpQW4\nzFeVSAtxeS0LujYjXlccO+CzWnIoXzH7DrtT6kMd+bwiQQqhLaFDICyWrate\n7JSJ\r\n=K+p2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZ6lYQfLVmw1sFuKcEglfknzIuPKcM4tlquD3Glg7xLAIgC35unZAAQuM0AL7UEn1xrSBLNLsP4nuDqf0aINN2h/I="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.237_1590524429711_0.20103891509515392"},"_hasShrinkwrap":false,"deprecated":"This version is no longer maintained and will be removed from the registry shortly. Use full compatible preversion of ^1.0.0."},"1.1.0-rc.12":{"name":"@leanup/cli","version":"1.1.0-rc.12","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.0","@babel/plugin-proposal-class-properties":"^7.8.0","@babel/plugin-proposal-decorators":"^7.10.0","@babel/preset-env":"^7.10.0","@babel/preset-typescript":"^7.9.0","@leanup/cli-core-e2e":"^1.1.0-rc.6","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.12","@leanup/cli-core-test":"^1.1.0-rc.6","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.12","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-0VTTKAyDC3CXTQEPQA9MgBGJzC4kHQrZz7LK4Q3YipT9Q6KksOU4qfHFNJLx+QRv0OuWeqzTckwL2Al9YwfhYQ==","shasum":"529f194f446ff5aaf20a80c50efe556768504199","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.12.tgz","fileCount":12,"unpackedSize":48601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezrwZCRA9TVsSAnZWagAAGY4P/i3PKHXpVbehueLA6KN4\nPEdXxvDUPV0jJx+sSxRSmlguU+qeCYcG3lcIHBL5og9fpTlaja9LvKp5vhlV\nZekZBNLnrpu882BwJB5ZZuOAwX8tfH/+ukyRH4EkopUmZsGANIX7sdtFgU3Z\nfT0O69b4r5eQXmCOPWY1D1N+4qLIpXTrUqKSBW3Kju6AIbEClu67Nvv1xRhe\n9pIdVUNIcCgOys62dWYzXC8SRMpRulMnVRrHBvFjUdvZy6XrhyEc7GOSHwZt\nynbM5rkXjlhpOFBWnq3/n5V82MCs4YeGrwc+NNWxuvf0rYM0kXJJbQ6xpi8Z\nZIGA9WiBcDqIMgNjnZXBkDxGVvPq5nrrk9Q23UVOrOuD5XJ6rlcQsOY5Vmkc\nhG6p41lFyWE1hg2E0G0zRGCdn/IWRb36RIQ/SyI736fBbnEVITSWRdC0SMxp\nfkrHfxfAZBfT8dwMRVnyfqePYHSeSdwsUMTo6xC18LjOTHItXMVPDK3aJ6T+\nehs2PkC2CksoAfLlbArFimpZmj+WAlS3X1cSjDMIxz9czrIPr6xKix/tJMEa\n6yr2hix2qabNpztK8h8ny+q/pUXSJTmTGkn0BzhVNOlbZ/bd6Xy9N0a20LKb\n/4d8c/wZ664igrdEduw/hSmU7Y9a2Q6d35KmhuIn/BSJUk+wZgWEUISmhgri\njnkt\r\n=R6Qm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF0QGOC6t2mR7ARQ+nE8XiSbs1iDKEedXUU4QEQjZnoWAiBcCtZT5TgpN8cubfccQb+HbMT9HP8QioJreuSsr/1FZw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.12_1590606873014_0.131109373529396"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.12\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.13":{"name":"@leanup/cli","version":"1.1.0-rc.13","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.1","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.1","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.6","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.13","@leanup/cli-core-test":"^1.1.0-rc.13","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.13","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-xjbzlJ4ax6EfdDDpl+fOnZ/7fAinKtG1d2VNHPxxh08TTy04aKiIWWniDSlQqU2FTBZS4YitVlWCxnU42vXJiA==","shasum":"cdd1511f37cc5a1ae50e5facf14ebe6fed93ae5a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.13.tgz","fileCount":12,"unpackedSize":47160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0BA+CRA9TVsSAnZWagAAVs0P/119iBcCoZE1PJL/3qIC\n5yUmfkOfk8qMwKz6pwPPfHOiJKveD6LJ8U5TWgeavID4AvI6YTe7P5NfhjiP\nZqAiqW4Kbp2uz1XK1pSGQ3qjId4XiWxGZmpzZiMsOodYlDGvMg9+lN7y3KtQ\nUKk69YpNkryeql+SQRfBajE8+rBQ1KBvS9/A73+f1D/ejDn8tHlvmi2H94n0\nnhaHpwh+hnjih1papf0RvGlUwKTX3omb2l/XHtp2gZjlZKkzUbQHGKIGsPBE\nRy1HbeW3sVFeVD8+JLhhFAf77n7yhVNJQm3Xljni0cqTmINy11iiYTr7+mLq\n2WJs4V8z/VAwc8rQxB1bxErHnPknhGQ0WsbhVQDU5MMO3rwMZJHNXmAJwujA\nJJ/xxUR2o6M1sInVItn2E2jf3X8GkdQMthpEqcH+b6y/jkipo6wDBNRNJpyR\n2iTEoluB5nAzYGV0ZYDl4J5ao4bsSx2Wn7t9TnyVc+xFppItW2Mx9UPb5Nh4\nc9Nlm6ZWRWLW4u17IlXoRFo22ra4qqvfnhrZdgjRHlYIQupBM10bvBFvfauv\njESEIpwqNFNpMaYmjUQc3j9zsvq1gi3lV3KVxUWUsagmzfS6IAFzk22zwXR1\nM9byH/hR1A0XPXfH0uxMdHFTruEru8E1Ms0NZhtqWF8yUflpBYUdI8C+q8A0\n4jkO\r\n=tE06\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGgGMg3JiPxIhOBCYHhKPaAvH6Qle2CUTeQg2vEEeoo7AiEAh/DyrDmpMKJTzKkZmngSIEKg4+Hw/N0xwUmhMrJI/ls="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.13_1590693950305_0.4886144264347456"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.13\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.14":{"name":"@leanup/cli","version":"1.1.0-rc.14","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.1","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.1","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.14","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.14","@leanup/cli-core-test":"^1.1.0-rc.14","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.5","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.14","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-PiUPu535ATjvbo+nK4RYQGRg1S09qk5U/99dqIwasfDEYv0jqBgAL4f+VNNcWURdMetM20Vq2dGzaL0juaEHjA==","shasum":"b1a681cd349e25283d225cc0cccd996cfbeb6125","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.14.tgz","fileCount":12,"unpackedSize":47161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0B/kCRA9TVsSAnZWagAAJOEP/1Kgjs5Wa3ahF1QSd87q\nIrsyynRAN1ozT89HU0WlCvAvDB0ZKudvQ/7T+Ky5TKD703ZO6u7h27sUlxRM\n6m+1erJM4OFFNmio6dxqfBW15iBn/54YQTkSv/rgzpPqEqeWMgCUdJ35jM39\nbMUZBLBrOyuqopBf9/Q+5YLdKVsJCt1AY1PHhwurcHzixHxz2c1qXI3E1v+f\n5LJBMpmX/0oRlKAxdYyHBDsKJA6yZ8YKeLg58p/wNaiiUfxHRhAEQOWU1REF\nAEE9qT8Tfp21SqZIyBjt2e1GtArnxrw8C2/pxvBkf242uLxRrXAaaFM6TWaN\nxGdyfXXdiuwxaCyFjqMvBuizbk7TE//wEC6ngoLmDm9slXPyRp7Cnb2SPYPA\nBff108Rl2xIBbDDyzmr9UGLCORMRhnIk8BU9JPSensncJUboNGSa1ujtlGaf\nhaddWttizxTSOUPkkojkxoSPu2DraZE/8oboT5hIfGLBeLY7pAm+g2mn8iBW\n3RbxPQ/D3pTfz+uWeL7O+KIbX3jGQPPIhZ/xBxQNP7GGxwL6a2vp3mzwoqpF\n5Shs9/F2Z5DhXjRu5pEsKQnpyZlkfuFcyuXWvhp2MXgYLGZmitP+Y1PnFoXV\n0rqjz1e21W3aObSx7QfW3MdUUr1qMFySb0g29osT7Xbfdlc6qJQDW2L/ORIA\notpn\r\n=tGUb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmlxaQUVD8wEDlMr0Io99eVC/ZQPOyihqUdXz2r6txdgIhAMDTrnzb1FKXz2EAGt6ZocaWdTyvdpRHW7nNgBC+M+3L"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.14_1590697955513_0.7246383296751573"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.14\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.15":{"name":"@leanup/cli","version":"1.1.0-rc.15","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.1","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.1","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.15","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.15","@leanup/cli-core-test":"^1.1.0-rc.15","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.7","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.15","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-S+u2sI7OHTusBTt0mvjPt1Q2ModSJgug/221MoVud9/vnIW8Ko/cYG8XkBEhu7mREv3ZeqzCy7vE3pQTz4ZV7w==","shasum":"e40a46c7fe7cb9cd7c7ed51123d681a55955567e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.15.tgz","fileCount":12,"unpackedSize":47161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0VQtCRA9TVsSAnZWagAACykP/0eSVKQK3nwOGSqO2ocR\n6xEwrCyKzJSyZo4VybISgXQwzr0jRpjzY8+y9jJL9BnBT+jVGcLxx5I7Khb0\nDOl58VXL8NgyFeXz19Cek8I/3wOmq6f8/XBmChGv30BIZkYoVclUdELDwnrV\nAGcN/8Jv7oH9R+NXHnZ9oXDPeVjNokFqJZX1oaWRXRoC6re6E+pTLx9F0GA3\nJe3gRMXzVAe8PUnJFnw6iEavTTnQPzdxtWGTCNK6GsvJmFcRrSJcDp10eo2Z\nZ0cIu9oJzSh9dNGgqxa4QSRQgUDJRHfeBDYGUX8VbNdwQSLuLBVZp1BVg0dH\nXpCxurUmuVjyLsiSQ3imUSKcZ47dGrETwUbkDlRtCbBnUQHZqzALYZNMNdl1\ngagcZqO3Gr9XpgZI7txEH9sEvUxG6rzT6PFhZ/yBBL+QoicQrqIOp8bpr9jV\ntGi1s8399qaxvKrk64vbA9aERiMs/hVLNNPe2s8qo6fNTcIVHTzfAcGHq+48\n/mEXqbvSqiJL79kuz4ACwVKzJ1BCWOfq+Sx5wz52P6QIT2s/HBYpYxJRCt2a\nokwJaDrMAKDvy5A+dXuSJerwXZ3GcIZZAIORtfU8/ZK0JGr9nlPpQXOSgBG6\n/w8ShZUIMxpHk753TXXoWpUMVM7fUfbPBiQa3qNcl1KieTpqfAzt1EmKAcR2\nWvZC\r\n=7Ovm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDN0w2oFNk01JmtGnRqMmEr2OSahhMReOly9ndTHeWRgIgYREWPvLVyLMCFhoWT8xRVjYSPBOGpqqplr9G5nIpoU8="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.15_1590776876908_0.6361652135901343"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.15\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.16":{"name":"@leanup/cli","version":"1.1.0-rc.16","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.1","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.1","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.16","@leanup/cli-core-format":"^1.1.0-rc.6","@leanup/cli-core-lint":"^1.1.0-rc.16","@leanup/cli-core-test":"^1.1.0-rc.16","@types/node":"^14.0.5","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.1","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.7","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.16","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-UgRsMcmlANL9ixrRNYYqFguxKd6GYINBkrXzqDO2r313XwZs+MWI+JYyNE16c5H3pun1izcSgSneUq38tYs+Ig==","shasum":"adc8c0ffbc4793009870696cdc788801efac59e3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.16.tgz","fileCount":12,"unpackedSize":47161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0VeYCRA9TVsSAnZWagAAq9wP/jt581yplReFaH36qbw8\n7rvWaEfyxikHRqkR/cXP7u/f+MxhhMP7Oa2ngc+cstD0tA1w3mw4VKVmJNP2\nOvbwL7rhKcJGrtXFGqu4kwNuy6nBlgbvTsymuMr5sHXpewFv8Tj0lyHJJ0aH\neDUikrFyczxWOqg9Q/yEW/c7o0ZL6BlnOnVCsjNWcUxkP1ijZAxVHOcjDjWt\n/aF2GoMz3rnuEpY7l/YCJ+NAz/5wsgK+MK0Ax+1ZORPyhl5ePk9mxenhVxp4\nivZYjS/fjLHm1yMC++O4heyRE9tZoOo55e0mj0ll41rQQ85VDZOxJljbXFnm\naVFxh108j1up0VbIYTrW2lOJcnYjVIabJsX3w9+eVqj4FKXyYBSScZh6Ufg9\nnfMIPA26jNaP3l2fPYPGyCmzHI3QeQDgZoMQBpUPFOypEnObbl8g2igDnXpD\nT4OEFPu1w6NeVakwryxi/pAYsWmeCuYlJn67QH9cmF1dhtglQ4xvHILCqRf7\nfheConSFO9g6ro8tQ2fN25DetxxypmGCg5a0TGfn+SkLM6/U+E1GZP2fMPeT\nWGHTHgr66gyIz/bSOMtlos8okOv3Kt2Ursn5R+/jBQin9S5Po/3A9SC/PIg6\nSFm5N6S8AmThEf5QMCcmUZA9nS9XG4cg9zB+BgvXhd/iwyNIUZekndf7zMSJ\nu8+h\r\n=N3Z8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6m11pRYH4q/xu0PVD2VcPx3Ngyi7wyJBcxCUZoHniBgIgfQm9nFsPVCMLAMA2MrtdFRVI6OCpGFgBXqJ9R4gsO74="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.16_1590777752269_0.965499687844908"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.16\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.17":{"name":"@leanup/cli","version":"1.1.0-rc.17","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.17","@leanup/cli-core-format":"^1.1.0-rc.17","@leanup/cli-core-lint":"^1.1.0-rc.17","@leanup/cli-core-test":"^1.1.0-rc.17","@types/node":"^14.0.9","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.2","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.7","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.17","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2CTTmDpAkvSukYIppig9FAe9+INMKGBdojcrTR4aYs1ebu1NnWn1kUirra/P2twVAlvZCiY6B1p2ezo7cVTZ4Q==","shasum":"f8c2439f6ecb8cfc2251c00043804f6f063380a0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.17.tgz","fileCount":12,"unpackedSize":47714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1unuCRA9TVsSAnZWagAAYBoP/0ABSRaeR9tOx1D41UJh\ndAoP2oqoWFQ5AavkdInb+cEejJ0bZmupaSDZupV+4DzEAMQYNaGAGjjfLXEL\n9l0ARoyi2YGk4EYzneMrfF53WDAi8Tvg3kFAZx300niGdIDn6excz2j2OELC\n9QI/SvlhZvYLlXyGtyZreh8oJ915VCk6oAiErVCZmx5fWy8/tDsrVE60sCoe\nig5pShktWjmElIyuDbk0Ph19KmLDFqAP2gZ381rJpgGdYt/iwn0aeAbCOKmq\nUd9VaVij5/POLzspatu7zWZyqqIOrWyNlgvivBMZPPqgp9rFu3qDLj9DF97k\n14kLw77X/5fBq8nZKNW9J91x/1X1mYHcOuQE+rL8tV36jgnmIyUX7HFYEGb8\nZbVimm/ntsjxngG8wlkUIPYth7GjGI8OnoW7pAyniUYV7WzAVznqQFIOnHFZ\n0EyRGKrY5sVIJ3M3Tii08neiJlQul7iEUvQlgOrwjn1aFTez9kckCg7mZ9/I\nGCLprevHxW6+4Diiz/zLsmKWdMZgKrKjwT2mS7SyiftvmXlLVOHZl+OfiP8L\nrnF6Fb+3uH4J91oJo0YX75aePcwuTN+3hvIAHZjuz98iYR/UBb8Ag9TU6s8w\nMzSPhWcF3eSAg0EHF6LtljttQzErLx+g4yzfn1JxSYF8qODJi85TJFXUoBEJ\nriwT\r\n=BVyV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3eg28e3a6TdTsR8aK9AiIZSUC8oGPvLu+PxTnXTGMgAiEA4hXTx6l3HqxMuCEuGa2xc4+bKe6cgjZZ2S58Wm5X5Ss="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.17_1591142894150_0.8071560642940963"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.17\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.18":{"name":"@leanup/cli","version":"1.1.0-rc.18","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.18","@leanup/cli-core-format":"^1.1.0-rc.17","@leanup/cli-core-lint":"^1.1.0-rc.17","@leanup/cli-core-test":"^1.1.0-rc.17","@types/node":"^14.0.9","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.2","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.7","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.18","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-O/+b9M0i0m05DVuMWGmzJB6oJWaRiR1FOWLFvLTNQXLbr/EzL8pXZi74DBK04tfD5jfca6xh1fjEVf1QRSLOPA==","shasum":"2451fc6f10a7bad88b1a109509d54797b5d51760","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.18.tgz","fileCount":12,"unpackedSize":47714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe13LLCRA9TVsSAnZWagAAOZkQAJDb7sZJD8Vf7JjKSdGy\npg2H4tjM+sQGx+L+Tm5BcZyd8c/eSQHnHVOoDbK/4oRdoNr8UFXS7CxX9gyX\nvp1/s/GbZaAd16DvFvhwIK/riDOi24vX6aYmg31J9sihk1IBGvz/72/Z8aVT\nUyvePPhTBXEVDRjTEtK72JNsGOfBvGisM4nShrHR4CWtDSvVg63iMtabIg58\n6HSUBFojl+TxN6bLBL5OsqpaF4amsEdEJbh0XqG9bKZs3sdrYyI60g4/Y/6M\nFjsYcNiseJojWwZiNviGp8bNCiDXUrrqj0Mo6MVkmayaRjTeaRkcnG9yiz54\nwW46YZ+bPTGXsq0fiNrxpfdxApu4jVSptiVfXtSpkbCaApfwzDeLmxGyy36f\n8qWnBxw+B7oXFRZd4jnp6r1i2I52cURwtm0n+m06mUP5ZwiUnYPuuL3MfV3j\nowWOsv+Kf4S5KCq9fMX4HwThq232pdIQk/4+x68MPPohFhkUmRQP22btzMbg\nq//CRFDW1J+kV5AHT6AlrzQ5CwvUrgyW3qOpQS7/rz/OBwhrYOJn6YRpxgLu\nxqqxH5pQPDbsSqFqW98stpgBBbWT6k/TnEGXTv9Iaj/3pt7IXOATyCdD40Ni\n2xHvw7TjHQVsNW5CpxuU9XmwKxv2XIKgadpMQiSHKYrcsePdMgXeatAeM9sI\n1+Gp\r\n=W1Lv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFHqq+hJxsjwA2gJtj80vxYECcT0dJbSnM15ph1dWZZeAiEAuHvL7svxJsL/8q8TU+0t8Kdb4sd9DoWwwuKTqLXD9SQ="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.18_1591177930788_0.8542033639283455"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.18\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.19":{"name":"@leanup/cli","version":"1.1.0-rc.19","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.19","@leanup/cli-core-format":"^1.1.0-rc.19","@leanup/cli-core-lint":"^1.1.0-rc.19","@leanup/cli-core-test":"^1.1.0-rc.19","@types/node":"^14.0.10","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.2","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.7","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.19","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-jMsg/0UugxjrvdFHLUmEUoCOKuE/AqA05a3tT4qP2EPf21QHlP7hV9sVK1nPLMqL0qCfq3ym94GZflCck3JvdQ==","shasum":"2a0e7b9cd3ed167a56fd61d2231bcccc24ad42b5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.19.tgz","fileCount":12,"unpackedSize":47715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2TqMCRA9TVsSAnZWagAAWC8QAIwTjQTCqnAtvZ4mj7tp\nBGaWdjRiAe3VYlaBvxJohbjTgjNR1QHz8zw7aAM46LDzCyekJTUBEFjkMvCm\njI4g/93Dfk9Rshr3Ja+7fJe5+XiwdNkEb6nzLhjL78a1LvF5CwCi9GNPo2rc\nSzaPm2lGpEbdpZ+v1n/Jl4BpROnVtG3QvI9hAaw3HDymKhKZXin68YLTc/e6\naL0toC6LcQoRjseBDDLXDxWou1P0s38i3uuVO3aT25B0NYNzwiWmFCk5wQUh\n8FoihXkXZuScf5x2HjXJXu1+5lCVCRxvBUULguhiJJd0KRGrWh/iAq9IOIt/\n9Ns5J2JJ2gVoS/Z7B3TYrQbnXmZiviXg3d6jntaG2cBQ2gI6lAmnfnd/n2Lk\nkJEIhrhq+3UttPvdcpIztDe+LYqH2xsNIO+eir9nb+YlYjN5uBscijUPBM2i\n6K2OImg7GHnv32BghwovhkBU/BvBqr45AlO95fe08anPQZQ4LBvCpTBYQbLy\nAeYYvyuVzrjt6dq8qpd9vJaasIx4fSY2xmpZC+iozR+uT1ho9RgF5JUUmehh\n3WAUUUkmut3XOghvgqn0NVk8OyokHeCjrWRYfpygy5Ko8gC/Uk+o7lLdYGHi\nXg6iJiGMWSfBm+miZbsPnpb+yf63Uh79JCGOAEOcxIXsYTN2ahHQror+x68S\nBMnG\r\n=mXoG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDM79RG0icV0i2Vhu6MiARQvmOrkqcgtxlkiQfluSI8OAIhAL+eTjklFDccdNhx10DWEkF8s0/E44al8oerAqohebm/"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.19_1591294603654_0.9088545842572402"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.19\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.20":{"name":"@leanup/cli","version":"1.1.0-rc.20","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.20","@leanup/cli-core-test":"^1.1.0-rc.20","@types/node":"^14.0.11","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.20","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-TspHVTEQOodQ1Q/r/J+LqfQGgJQ+ZXva2Bn6YCcBBhfBcI8bgyaGrmOh9hf7wB1FBk4FOnVGtbZhydMBq/IMGQ==","shasum":"aad76b4a8b1858ac83e29ced6d3a4c7015cc987d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.20.tgz","fileCount":12,"unpackedSize":47715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2xH4CRA9TVsSAnZWagAA68sP/R9J/KBOmMZto/oZHT4k\nA23CEaLw/4tXbfmpRF2NGdkzy+DYEHTiSKuHbBmbZsl6UIhqvuzg3p7UpvB9\n4bFPti1B5IAY1j9GkyDTrBmKcaJTdx9/hUOsH0xadZKMypJqRvrTRwFot92s\nFd+ZaTrCL2LMO3ZZ53PShUav5tsBCvEiGtceUOkvK5+rktzDg/cXzfh+KqOB\nZw9LCGvbn28DQvfqbNLmxuqJ2IHu4kbDfUewc0mV6SWnsSyIWJXqOYBZ7ghU\nBtpn5JhdUfZlhlPrK3oTKbmhQ7FS1qRV75pxZujNZpaZUnRbPXOsDuHyd0YK\ncoK0EKepJHGF78+RG7/EZAXbAdyFVmT8NuU4y3pnoHF4KsyEjwBfpRP3UNCv\nyk2mxGA2S9AhMaTj1DrALi6bhaDyNfGK2SEKq2ddoXGedyY+aqXOmJNxKQ64\nAh5lLIMbnS76mhFwR4IXyXxdqfAySW35ViHH2BhmRJ0RzCjewi+931o00bI6\nPGbGOZDVZTXj5tFCuydOrTZqKUCKAoEc+YUQQsEQAEnXVmqjRj+fXmn9QBKz\nypGzgP5bk0l6jjGClw+hHLPR0+hlKA88azBTYR+/wz8D25N39UemB4I/4oMl\np4Pe/XqF8wbOxNXrlvSG9rLdefRmP4yNNlAJgvjONk5yNQhD3qayZP3dZtpW\n/kTY\r\n=/C5f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBdhrJOHEWIw1S3zUCN73C9TP8P8+fZ1fn4tdMUsxMYVAiEA/Kl7ayqKYDue+D/KkWLxyMiulbG8NbO0o/YL9G0f9pU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.20_1591415288350_0.7298934837032538"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.20\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.22":{"name":"@leanup/cli","version":"1.1.0-rc.22","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.22","@leanup/cli-core-test":"^1.1.0-rc.20","@types/node":"^14.0.12","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.0.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.22","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-mfmlIuC5T7BYmade1+WnuuJlOfqUbvXT7C2RK865CdwS0L9pxcdBZPPVKP17BnQQKy0LgKzV037NyJG3L2fMGQ==","shasum":"19474bd2d267723c125023254c8b618105bd2d21","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.22.tgz","fileCount":12,"unpackedSize":47715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3q0fCRA9TVsSAnZWagAAjuEQAI5+088xgmKaunHWrwoh\niSBfp9B/23L7kruwtHSurgeloo2SS0vibnrpKVinh1kZ4pKzdQZWO7qR/aZq\nDwagZcMh8766hw878FDZlW3dusRFdI9+XHeHx25YIIU3SHz8Q9mnClRmvt55\nGbn6m9qkSxfni5VRrskR36SiyhsnQxOGyt7cZGAAelfknDvexF9QiMB9Sfss\natAfZ5KzjFYDFZ9iRTDSZICd+G3o+r+ZfI+vvC+iFcg5szsO6110aIdwZVDY\nq1osSgY3aBVxgM8lI9aBrCtaMgHVWGe5DJzXW1p2dvD9i6daeZJuuOosZ2LY\nGRbSeH74LzRMCtxdUR6uMepmxXwSTmNOaHrnwXLm1wGoI1eW+9ni9F4NAxDg\nnTnFS47HOV3oVLXPyNRtSwOn1vCNdMsvk8jCsU1c0dI6m/qLd9DsvBVi4kHw\nyvJqt+Sc+NcRGezaMN4Bi4J1onRsiWd0sNm8GrOwa/YkSamDBbB0ctNwMlfX\nMCOmKhZvhE2NUIN7VlFWYtHbWcuZtjaGpzmmyhSw7ebybQZDWMrG0PyHFoZD\nJ6R0DvEMq042IxDXXBX/2nks67qjzAGgLpN+YdZr+FtYI0e7rncgyHU1kmRS\nNJcMYdyyN8E+qrZrLpx25/yBwy/iwHGd5NH947YKdpN7+17lD263Dn6jALUQ\n08jK\r\n=CcsK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICE0Q997UvTw8FF7Xg9Oik1eSllgssM7dDYYzvjXXibUAiBKEPvZggSZZp3UZe2O+i9ZyNd56m55oQOAL9RquE+k4Q=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.22_1591651614981_0.25728615970150415"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.22\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.23":{"name":"@leanup/cli","version":"1.1.0-rc.23","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.23","@leanup/cli-core-test":"^1.1.0-rc.20","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.23","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-6buit5G9vMGY54CpenTFHPnG8k4zHVPAveena/9CvFI7nE8xu5+dhWPCOihrLUQy58b1foujiIOxD8hvOsf/AA==","shasum":"91b5d02dc32d26efea59c56c5ea9b120a0f9f76c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.23.tgz","fileCount":12,"unpackedSize":47715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4EiKCRA9TVsSAnZWagAASZkQAJMwXT35/O7dnWgPo4CL\nJk79MT2W8C44zkkWnM2topCJVFXw0GzEIWrpRVL/SYHB5f89W7K7HpYiDqkE\nZO9FTTRYnrnUTCkK6eq9/jFltBMAFAloV+hia4bMSAcxw+dj+4AokgY5/pYw\nf/HmFW6DRfPQC6iFQk8rD/X+t5qCFAUIeqm+GH449/upmge7UomHBG7NXOeF\nQ4GafR0V2zhaix4mLqhHnDkycWrIYBTqpKTuqk/kwFckqO4XmEL4jGAEqjDs\niRztr3AoLCoqUwMvJjpJRnCq+XYlRWCXVWfaTHAhPx0ZoZ0QXRDqkVJ1gdbx\nC+dCzpHH+YWfpGMv8OTU/9tcorpkcVDEYo5kn11VOgDC9XtFULf1h/F5NLOT\ng3o0DXUz+qZG6xmbcxqI1vclLL6gs4TebJTD9mgf7+frRZXsEC0LE+13h6kE\n9r4/Zblw6xRxt400H7sK30cY9RAeJUcyyJqKpcVSY0MbEbj4THiudyqrwJ9w\nx7QsOBDAfIkTsln3fxwAo8WgsBalRyUwiW/EARsfhelgRJC1yYCauB7W1+B6\nM6V+IXllQGLVOEOBbPD5uDwaZ0f1KEeSQ642Wv450MTxnQnth1swpdfG7Oyq\nL1f/MSGzn8ilYojPjXsLUd+96JMVhU71OK/wk+PQmPcu87J6Xmezmm4dVbIS\nbApe\r\n=Vz6S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCa7DUv2c26kxha6TQ8nkVFvEs8b8l67QXe6ndMUxpBAIhAIrsMpM+tcgAyMRiK50AtNERjv2o3+NdAvuLtSNefQ8j"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.23_1591756937725_0.531365227027188"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.23\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.24":{"name":"@leanup/cli","version":"1.1.0-rc.24","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.24","@leanup/cli-core-test":"^1.1.0-rc.20","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^5.1.1","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.24","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-lp32rEgmZX5x50cJxCZSgKJpGkCFPIxCwNYcHgOrdZvcvN4T9nqTGji4wHGYF0rjBpvX0aoJc/Qjt8P0NRK9vw==","shasum":"96f12592884731325824a5d391c07c14a9ea6ba2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.24.tgz","fileCount":12,"unpackedSize":47614,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4FmrCRA9TVsSAnZWagAAWMsP/1x4PKHHVrR8Y0MP5EmV\nC1Fs72ML1ld4hvzQMRl6z1yRyIIyuIaLWj4T4pUXuIai65CEYKKyhQUYLjH8\nejt6z0zYJDbjDnrGDxJ5pBx3Yn5Ys6csyQaBJJ1SM47ak2LY3GqL8Oo6D8ZV\ni6GBFipG+nVtJ3q1xn2SeJQ2I4IBDdUB85tT+VcRU6Zt71Rufs3O4SuXitzr\n74ewxmozsc987VpOeXwzZ1MunrkTlFusRdUpNek5LF3eQAncjcZlpnGlcfOD\nBLM+nX1GebsNrPBz61aNWRoq2Lj6VY1QJiCsLqIE3Y7yxLsoSDFb085PvwkS\nrknPbV+d+zOiQQ+3fIu0H9Fp2aEhi5GtRRUoMYD5Diam3NDgx97r4oVivGUA\nNH7Q6lFWUVN0k2F3wiGvh7Fr1WEy7/yTBFRvui7TlH6o/FK5i5CpAklMmQn7\nNKvjruFVuYJdf3JEeiDnzNnjYqgU2Yso3TmO+qUxJhX7fUbGrf5p1wY8yTW7\n5GxmHz4B9a7EQOhHnNgUyEzv3KxeArP1QY3n9OrLsDt3Z93qdcrg7T664apj\np5SrWSD3I8Z04Kbh9NG3CXOiLF0Ti44EVokUphKuDBqC8wXIuigZzUdOJWip\nrineOITfE1NkqVTEtghQtzHvrwVtIkQ79dap7inztNyYzYoGcewOUeUvL5Ek\ncsxr\r\n=Hh1/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtnVg0gN0jFFfcN5DGmRoNNf9Zz1mKy6byal7xxHLwuwIhALo7fKJAKY53KAlzUUB5Y4ZZf4SgJfq7H8P+Sm3rrT32"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.24_1591761323237_0.9013956227517488"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.24\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.25":{"name":"@leanup/cli","version":"1.1.0-rc.25","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.25","@leanup/cli-core-test":"^1.1.0-rc.20","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.25","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-l+jDJkTXXRC8sQ8xZ7J4kwl7yCXFetpfpUBhUSv4ahppS/eHz93WSw/vAF/uv0FJ1z4ilkJA1NSFFDTpX3J+VA==","shasum":"7d89ee5617079dcf7b7d92a4724fee0a97f0cc68","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.25.tgz","fileCount":12,"unpackedSize":47715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4cVbCRA9TVsSAnZWagAAUW8P/10elsrzbEeqjYO9wG7y\n70ogLw1TFlJwvIZ1YyozS/PP6KO9KeDrw/+VmgV6/CUhfQcmVTuWFlaJX1fJ\nMbep7tWVKng7H5AzbJPCe3skYPJTv/Q6OLfaQ3rTtDmPjxy6ksH2Lgf5d1oX\nRG8vwg+6sH7TZ74cLkNdvzn3sw+SaxvP0h+xfvAHYwb79YMbCJ4Nsnl2JEjG\n6G2ov+4WpNLhsdju0uKnu5xSpJp22F3zFRGVyxBHFStajtfc86vx7sBMO08Z\nacEcZivf2KjY7iXf4c5laTn6xdc5LWuSXNuelU6U7H+ja/RHvDMYs6N/Ycg2\nBa2F2ijcujCg/bc5ZtI1uALvEC2QUA7wnwc3KQhrQhwkwyOwnvGhk09b0pzD\nGQVtJNrl9fBX/cFvL6EbgVCPqz2Ai8QxTvIK5vjuuHSVymIsV+eoO8ACXPvz\n0N9xFkKl4aLykobqYhEGWlckSSDGhEXcKCusa2f5Cs5YqN/Lt7sNBzCJlDq4\nJ6ooVO1eDHFXlrGgPxFrL3C9MJAsEf/GpNqVkZyr7/SxtzDJsqTTq9pF97lL\nxMydHfii7kw3V8zmTCeumZmt2LGbiCB6kzCaPXbX3VAk5jNpC2iomh2BYRVh\nOrcJRSmUC4koI52Thte4n2p5SgjiDNlVKiLMvy/bHiUJCRMLsht3ayLNBS9K\nRLY3\r\n=FlwU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFXKVHBl1o3qWID39mhTMXMeeWRCMWA2U37Sje+yHV6sAiEA3NBA0WsrZoX03kkXdZECFcX4MmMFM04r7KcWgim7W7Y="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.25_1591854426535_0.8158413590279927"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.25\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-mocha-v8.1":{"name":"@leanup/cli","version":"1.1.0-mocha-v8.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.25","@leanup/cli-core-test":"^1.1.0-mocha-v8.1","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-mocha-v8.1","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-dFKMTeeZiIybE+WqIQo4+EXa8t1Cqj8duVkwL+iKmOfY70b9pOMHz6VPpsZ7DV0q+3y68FDrzsOPTQCefTrBgg==","shasum":"19cd30e33fe438bb25f1dfc57404c471e39bf59d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-mocha-v8.1.tgz","fileCount":12,"unpackedSize":47725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4ckcCRA9TVsSAnZWagAAPmYP/Rt7au8Ux9ISNNLSlqV/\nNqppz7kD2YDQ1i+7ae9RMbsr3uQSNXb8xh4JrfwYwqPZ+m7Z813uYs08LuOA\nVZVHqmN8Fz0ejWqqjUJe4YLRRmHRczEVR00XK7/JdBsi+GP2T3sr0NRtLoi3\n9vNNcKOXjVZ6Mnix6CmyZJ1t3v/9+456VSwWXLMDdDxp9V03iisgWObQxlXK\ncJSiY11kxYzbsWkNdwtYaP0B9kI/IHUBqrp2qFWIuiTzgiMFHO/BWqreJ1W0\nk2NIvBJQUqpw4/kUaFuNL6YhIaEofRlRQkTLH6b8Q/xSuEMONlFqUXVSo3Ot\nLj9F8b6IKTl8cB0gZ3lsjACAmskPY1XXY7Hb4qMoq7gQKuu68TPhVaqsXQ/s\n/Bwiczopccolco0ax/4DxyQ1hRlglPy0jCLpplGpWJLCBb5p8xZeqKl3D77I\nsH1dVB/jkcZSQIEFVEq9oMaNfaAOaIVdqBBay99Ck5sMNUmvwc9AuH53S043\nFd+OGmLxYe15R1FWj33YQZ0JHjOFTxLiMcfbzwBdDq2spwT45upko+N7giuA\nEw86RD/uEqGof57s8mGrsLqEsYANoiFBaq4F1TAULLIiYuxwtarDN2zQceYy\nrkszmxGz0cTFXFE6lbR+NeGnqeeFyVLJ6n6JroAAAL/GAtFyh2GpRWphidXo\n2Yx6\r\n=Z5RF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnFAHkZzmAZkipUsCrQ1Sxh5TECsxO7ijlSb2k5AxjtwIhAIcvxe3tvojvP10G2poacBZo9gOyXnkpz1hb9BZPT6H8"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-mocha-v8.1_1591855387944_0.8843129610352201"},"_hasShrinkwrap":false,"deprecated":"This version is no longer maintained and will be removed from the registry shortly."},"1.1.0-mocha-v8.2":{"name":"@leanup/cli","version":"1.1.0-mocha-v8.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"~1.1.0-mocha-v8","@leanup/cli-core-format":"~1.1.0-mocha-v8","@leanup/cli-core-lint":"^1.1.0-mocha-v8.1","@leanup/cli-core-test":"^1.1.0-mocha-v8.1","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-mocha-v8.2","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-D1qJaTHsOBN9/2qD/Hybm5BJQ8jUbxZHhV2CfV3QJeIozmlb2Ice5BsqSXB5vkOIcsu+AcCbrzB6q6EZOt/RXw==","shasum":"f98cc935c8c0e85ae3631887b48c5ce3f6809b97","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-mocha-v8.2.tgz","fileCount":12,"unpackedSize":47736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4kmSCRA9TVsSAnZWagAASUoP/3rnML6PNmK2YztbS0fA\nDhk+BYdS/SLT24sm+TIkefd7hKNZH40TnSNDo2VYxIyHmIwgC28gBkFmRvnX\nWJqJ8dfstXPuO6iJglVtjeyzbuwlO0IzGeBpwYJBrQVmLAbRsHkgvk9LSZa8\ngxyDi41DzA3VFvO7/z64d0PzyVA/4pbpN7mD2frZXfXvBuAzaegRGb1y6L/g\nni1BEUXm3ZEoR/iSzr5IKUHflEy/guy5SwRry23+XqNVHJaH5BUyqgCF7uUP\nLcFziWkdFQ92dESSuQ6MdbhEbj6I5arp4TOmn+QneM6PTU8gXSxsUddkr2yv\nNHZkN7cRWQ+kCzerTJauNRDUmrx5j51Uk6/kiSkQL96rnTA+HANK33RsCjTc\n+zhnKxRoO2f+PWxw6WS1+2JxmhR+OrsO5jn0jmJJY6ecLTAyyi6pY0fXBQKj\nrQ6JVLQ4yH5Mzcd3nVamEJ7gNIfmsiF99o3CHmFIv7YdA96jaWDOKHFiK19f\n9iQKV/HwU3VOHAG0HMIKfQ0W6GmnoipRzll7pEns0KMD9H5mGQv8M38rMQyU\nhej+bhq+Dm+8iUcLk62d2ST54mcv4bQv6ANdHGzO3kGk+RqaxEfClwcDRO9P\nL14WmMeQLQRFA8O+kTfJWhYIE0/MMulreuoj5duxWrZB+4z7S/rcD7a7sZi8\nECjU\r\n=uFqs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxfvNl+sCPe91ztuwksHoVf1xb5GOtheONSVzvylW+lgIgCcwrNHofxn4HfqAXGuFVuHR0FsjRZCLQQcHOerg5FhU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-mocha-v8.2_1591888274395_0.37604627370914545"},"_hasShrinkwrap":false,"deprecated":"This version is no longer maintained and will be removed from the registry shortly."},"1.1.0-rc.26":{"name":"@leanup/cli","version":"1.1.0-rc.26","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.26","@leanup/cli-core-test":"^1.1.0-rc.26","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.1","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.26","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-uGnbXLlk2DfSGh5dzR/PqvxgguuguAu6U6P5OmnPw3hpetSelQuDYSjX2lB/ADKaX8njdKbyx1QfHRd8nE14xQ==","shasum":"9954d06d295a30645ebe3dabad742335454883c5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.26.tgz","fileCount":12,"unpackedSize":47715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4uzoCRA9TVsSAnZWagAAVTcP/i/UlRhfyBoM9utMc42/\na1IvQJUQxbewggIbW9yJ3uXj3RYtutWNjfgvPYOz/QAseU77dbZB5ulASZYV\njpNUzxQcNGqSJfpKyDwJlY/mfdGM+agTLUrp/LN6bq2nMZVaG+lY8d9SbBv2\nnfDKocdfE59dI8nDG1/Fbf45tROn4vsXNajWcLTUkujiI4Tviqx3LJqGzvxR\nWftpBJfzpkhWkQXCSR1ZCd45oMcinl1PBh9kSkbtULfDS1hGJ70YJJCMRnLL\nwxEP53vCpPx2A4BPrc1xC/EhjRdfq+BQj3I7uZzMVIRS/h0V3HJpx1Ix2Pw5\nRHKx/zQvb1MlD/nFw1dh8yZ6zCQpHlX9kDTEQkoNiTb3w4knhw8AzjA92SjU\n9EQCQu4bTV52FtGVXF4DnT8umbAjwM2DE/9NF/IpeK09+BABFKYih8yqnAcn\nwPwBF7BGQD0nnBmBmiW2UNqxpRkQviTurfs80tQW9IhsZW+OyX2LpbKyHkS7\nDdvZgJAjKBjvUn1JM3V6E95c88wTK2uYfwnI1xPyKMJ1B44vo5Ysgb8Voihg\nzuW0n2ATeLKfTj1bVuaNQif3iAh+r7VjXnkJJVu6ZEzQw3HLreuhfmopM5np\nNFx1Q7K1xvpDzZekyZ0ypMLd1rGbq9QFlT6JZ4elIIuqcmJKnStD4rVH+2sD\nim9q\r\n=t2pK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDzK5a8D8N3Q9adOf1tsmzhXJypPH2S0HPj2UfzqcojGAiAsKfZiRYYOcyxIkS90gSaRlwsE9xEAV8T67Use8WDIlA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.26_1591930088252_0.8404077396545182"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.26\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.27":{"name":"@leanup/cli","version":"1.1.0-rc.27","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.27","@leanup/cli-core-test":"^1.1.0-rc.27","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.5.3","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.1","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.27","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-bn+ExcgazCfWWj+dTpmtA3h9CzDRuXpeMsuDSFNHP63asd+xGXK4ssMoGhizvFHbKXV2IsmdoO00V1/cGIqY7Q==","shasum":"6edda9f26a287edfcdc89ca1be752ccb5c9a251a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.27.tgz","fileCount":12,"unpackedSize":49520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe49YTCRA9TVsSAnZWagAAvzwP/31vL4Pha29bYAJsf5R5\nt4x4EjFZkHVzDvGhidcv8OH+UFcVMNnDLaKK85GGbaL7VZcLuiVJLlRdL2kY\n50GPkwVL19HQSDqxah9Dy/mnoBgTf8rRT65d0711jLBXGpy7MeGJl7wB5Z5n\nHTXTuz7Ht8lcwiB9AFgLerCJdtO+UEQ0DmCMZIKdij2NTVqkYfXDZQE/n8Gd\nm/vdEL9PfMLpmwdPMFn7hcgREB3zYbVpTrgm4TF4RmEWY+0XCVxZEKuaGGxs\nNGGFXGTJQTpCsvV2yNjJy8y59Yt+nCL1/deZkef1NafbVgBOemTHhw9XAg0Q\nnMENDMMAjJC2KAzEMfa6DzPgkE7X1Rxs+P98YmAszYhCCGdrJkrOF8Gv98U2\ni4qrQAkRUhJBR3oo60qNikhnd5R2vPe6zA9ttIwjazknuTTmDQdqzCgDKez8\nBlmI+LzafneQ0+noy1tRzAnIVNJjK+qqGn0D72dsi0i2AJi/YGSZCofnXCOJ\nNpQwMUQ4XSkC1uBwuyK9n2IzFcRrSPABbvO5KsWwpHTdgSRMgFAhAXSN2zu/\nLELaRkiATRRcZz9Hb2IwHn/cAacvkdyxxQTz/6vjQ2e8spaD1N41cFoSrCmi\n7jg/RA+EamVJelz3ksbUqfEErUsf5YlhIcJJu6K8XJ3wrM37nyo9UCL1MhEI\nF29E\r\n=O9Ec\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID7D+Ra098hJqgtlPMEt0pQqfsklr2O6l6uPyhvRvdM4AiA1P6sLhbcGxa4J9bq0ov7b/SCDGkOCK8cIJ32dz3IUiA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.27_1591989778581_0.4006480508294017"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.27\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.28":{"name":"@leanup/cli","version":"1.1.0-rc.28","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.28","@leanup/cli-core-test":"^1.1.0-rc.28","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.1","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.28","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-tccASC+8Zk/nbtTaSQC1+Xu6TcV9CnAQelCtUeI99CU2FONDqOwnMqGjoND8vKC3TvcQ1QfR4E9ozRuIkVoe9A==","shasum":"0dc327423dda927f1a4b1907e39226d62e4c371d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.28.tgz","fileCount":12,"unpackedSize":49520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6DkhCRA9TVsSAnZWagAAD4sQAKK4M25WUJ/wE1qLxeaR\n2rcsiaBAADlCigJlKVS1eznOYWxjA0PCas2GqgAUku/+rJ8I1WZQm9I4p7NO\naUCHG/xLCy+CLHplb7xfP5uBMWJ7HtGB1MAF8xaXmp7BDZPALrG3qK5r1zFo\nPRqw3z+GrTCRbosX3i+2A9thd4V878N4akNOMhkhNAN+fTxXvQTrwFfLXC5U\ncdVD8aEJTxWnEoQE3Y7exmAR0fxEIg+sqkWxhY+9BmmzQJ+zamd6F43Fm1Hk\ntV1Pcj3IgvL6VXUsmkeOf6AbyeWG1zPujtxzU08wzjbFxBcDPrfgDSL5eDGX\nBRC3pm9XG7A2kIUStlRYXiv1ugU1JNHlr3VWwpwIyMalVbljgv0A7ZWtuGSj\nOUMFLhEo3KrcTzsUtFLItHBkICBFF3DJk3BBVGnSsHoZD5xoOsxnKHYQHt7R\ndZK4+GrgtzbJWOboai0UV3nCSNHdlhC/Oqmm9sCVPBTXoUiHunFrr0ovWMVr\n2DNmfXkRCmpBWu1rL1OJvk6T5T6/jsVXNvqLEvEeyPpyj+cCJ4ctnos9JHXq\nIPqLtDzjgC5t9vu8zidXBUKs3HiV/YXp5o6rU0MnYkcbiF4awetDaU4Y9rVy\n4Ea4Y41dxuyzUfey5c8bG/Z6My/81loKpsn5oEx4TDJzylU2dd3Lc+NVxDIR\n2S4g\r\n=XYOi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeFW6WjrCIw51uJVOspU6TBgZ07LuddCOfdhovVlASiAIgau6DnPpzAhlwYGd66hK/yLBjOLXK6+cTgRKHeLpuTAA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.28_1592277280907_0.9435359577450901"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.28\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.29":{"name":"@leanup/cli","version":"1.1.0-rc.29","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.20","@leanup/cli-core-format":"^1.1.0-rc.20","@leanup/cli-core-lint":"^1.1.0-rc.29","@leanup/cli-core-test":"^1.1.0-rc.29","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.1","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.29","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-BTFix24/8HwXo4swa17IFcrNolwq6r9biZsIAawaudokcOiEuljLpw6Ar59q2zF2VD1LCywUCr35Hzv+oYp2jg==","shasum":"520fedfd0612f4eb3ce79ddda621a27153e29ea8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.29.tgz","fileCount":12,"unpackedSize":52328,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6ZwpCRA9TVsSAnZWagAACWkP+wTj1jPFIR2WE4wKGcQ0\ns6Y16pX+oTOVFKMe5DoAo11JJvj3+lbmEfwVEobkEvxnQSALRc/VlV2iSn7H\nLs8Ws59ZotE5Bx11+GcxxH9hAHz3n7bh7356QPztCE89y18mz/Ab85Y2jk42\nc9qBptNda+gVithUwgIx6s5qh6PWmTLBJN8WYGbgDOJPgJ5ea8Oq2ODt2ogb\nXEOaot+DwLb6UTrDpbGeMkdAK0l8iD5pNmnMSRXO/YLud+sryvfL6yivYISh\n1mUgEa8jWj6fL4NdyTD0D5z+i9U7o8rjYByOIGs+VwE/WgvvaRtbKEN9hihC\nKYYgwyFg1dWc+s/ajz6vszAClUHKpogJzPIGQiMdGg5lXuv0jbnZF349roj8\naQgjQej07vTUM+3ZhpRe4EKt+ADIHZT3PKTfi5SF1oJ9cqa6EsX6G9wzCU+L\n01i/Y4fg7vy7gEBTSn8Th4j+LgFXfxI2yCqqRkdAM+J4LAqePtdiH98gAEC0\nqul0ppxcvKSvyWHV545855ficq2ZqYyMjjG9M7rGAXVocqqnjgksC5r1xzQZ\n+DSzWhup2Oe8Or982HWuyqzN1B4N4gUsZ/3Zqsd/gMr6/kmJdbzFHArvbU63\nI9K8cZBjn7E5ZFvqe0plDoiwR+iuJ2EjH20oJYCZi+l2cky8xQrqCvOcyOfQ\nmcqf\r\n=jVYO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWnbAkfbarZin6Hy5KfE+C//XNebWfQhkROxljqOQvdAIhAKAiya99Iv+KjPP/cPNQta9PM19t10bUP/j1zWa9O36n"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.29_1592368168553_0.45872250868094366"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.29\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.30":{"name":"@leanup/cli","version":"1.1.0-rc.30","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.2","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.1","@babel/preset-env":"^7.10.2","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.30","@leanup/cli-core-format":"^1.1.0-rc.30","@leanup/cli-core-lint":"^1.1.0-rc.30","@leanup/cli-core-test":"^1.1.0-rc.30","@types/node":"^14.0.13","autoprefixer":"^9.8.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.1","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.30","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-4uSRrphdB7tOJdcUYFUYgN2gVV559P5oJZgUrrDSo2I41gtMo64HbDQQtPMJ5nlXlLydBgeMEWC2F7gC1qIXBA==","shasum":"e9725b8cab35869b8a1449ff2a0101127628d7a7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.30.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe67gDCRA9TVsSAnZWagAAeVcP/RXbaPpkiyjsEGtiSBj6\nSVUM+gWqnguEkCDg3/7UeHFz+ErJqmqIxIqKVki0x2IENFpbM3tG7ZABBJz0\ndCP8/E+4QQk03qWiN87ytpjAW0/C3OFVQ/PcgtzqrQIqY/YwHSYVzsvAf7UQ\nybz2Y3OmTozcOqTFiTKAPXsrlxkFQxHyI1+SI7MhviBS2ieWISYhBxwuysGa\ndIhV2u7/WfTdGn2F6zH+Y5JFyzWpXlDaWoZLC8Lx9pn8UWWnU60sphu6YS16\nvwzcKqciHRBnm8mqWZqjBFoh7S+fEPiXNF54Ey/ZUlKi+6uN6PrzD96iy/kE\nszqCFQNM8HDlOHwunQXv/CU4ZFESnKa5WlewU9p5ZEoANECF1xXy5j2ol4BY\n7bd944GJHatfgR5uS5ouJC77AyyKcW5BqLNXk8xRIod2VAr/0C+cMP7OjrFF\nflLqfxvAFXtcSPKEdMuhc1kpv7Y/LTCq3tVW9dqnTbOVnPY4iDq48aaCI8h3\ntNjcNm34XFbE+iWKlfZ8OHSqoBGPTFKMdkbolnZIafN/7mg2jNiDQOg6XlCS\nXAPdUaKs4ShUmxhjYtzsyrY4SFBgh+7O3wC6qpb2yx2Q1/k4Ov/VoCSEHcps\nSDjLiCtfSOl1hp5WAO0MDpNqeOtkCtVbBQfuJwMfB2lO4GSuTrs1aKcJUBeL\nEYUf\r\n=4wFa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTWjAZyD2N2s0znAJdnyoqKYlWYucsai4n0TfWseiIXQIhAIfI8tzw1XR33aPYrzToA9MYxDzn0SK6qIlwdgJaRc1Y"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.30_1592506370833_0.5852749658946219"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.30\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.31":{"name":"@leanup/cli","version":"1.1.0-rc.31","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.3","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.3","@babel/preset-env":"^7.10.3","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.31","@leanup/cli-core-format":"^1.1.0-rc.31","@leanup/cli-core-lint":"^1.1.0-rc.31","@leanup/cli-core-test":"^1.1.0-rc.31","@types/node":"^14.0.13","autoprefixer":"^9.8.2","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.1","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.31","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-qk7NdtrLOqvi4tb/p2CHCZ/jT8IBbuCChHprEJ//5GSEDlZ80zDRBfDSUHK6V2Cfd8xAFgUR6IBh9C5jrImz5g==","shasum":"0e104fcfd1711f9da51ba2fa598a016f53993bfe","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.31.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7vAkCRA9TVsSAnZWagAAld0P/2BZ5gszpOiIscnhu1tk\n8SKialVKb60Hbf8Lwmt4TDKz1Oynl8GiZ1x/IUe46NtxCOMvZcMUFImlt5B7\nrxPUdQg2u4avHwbafMB/ckRNPqe9vZ87ix+pADqh9hd8vm0uDq17pJLHjTer\nGbOahydqv7GJRAemh8bmQAfWcyGUVTzBMfvKUx/bZgiOPFnufycY6PcZbl0x\nU5HxPuZvw/HU7OZNFyjisJFaSWSzmv6aZH9vPXmmTW9ohKY9U2GHZiIMfo7/\nSSOmPjdcOEe4SLS3KZmlF+LFKghgS9ErZuO8IGzqclMpBBAO9wYlTYppNBfB\nCxN7Ak85X+6FupUCAFWLm6Xtv8UKpeLwOXhaQIs2800HyCZksf2C7+zGSM1B\nrKlGVewpZgUtOLPDxmPqrVpyG3F0mWYBWra7VtFbd55JTV0zeYlmNhAK/wX3\nSE9UtESa5B3evPQVuffEyhzWMAip446q70IAaupXyXl7s8ChIdf2Q6hhQESU\nIaFSB+23BLDF+H+8iqus98Nu/nGU8RUQ0NtQZ3uvLc5/m4UWOu+ulfvcqjZc\nreZ0NQJ7TvRQDZZYXN/gk8R+CMceVBI1rP4W2ADF5ZS6N1I0P+vWq82f2q+p\nNx2GjI59YQ/ciXDSb1A3IM+IE1A0SU8VbCKIsw6zOBl5fQYxuMyOMOdwOF4d\nqi4L\r\n=2CNY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTQYAPlFLu06lOESVoYhsjEX/kYIOePZqvZ9kKb0Kp8QIhAOeA52VCjJ7vLCyH5Mdp/m5P0iYGqMcFzdGFWMr8zU/9"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.31_1592717347679_0.4598334753990918"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.31\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.32":{"name":"@leanup/cli","version":"1.1.0-rc.32","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.3","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.3","@babel/preset-env":"^7.10.3","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.32","@leanup/cli-core-format":"^1.1.0-rc.32","@leanup/cli-core-lint":"^1.1.0-rc.32","@leanup/cli-core-test":"^1.1.0-rc.32","@types/node":"^14.0.13","autoprefixer":"^9.8.2","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.1","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.8","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.32","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-7PW9bsWpx1zHcpQ5c/L/axOtn0UXvv1Qdf5AA3Zd0yHGLbzWZAzo71Ov7BEBtUor4GsyXspUO4cc6BIBiF38uw==","shasum":"3ff6719499237dc909d6e16ad55bde00d1825994","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.32.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7628CRA9TVsSAnZWagAA/l4P/34jom0l2AqYtPTFD6H1\nY35X3TwkAcRdTzQZBzqn3ARTC4CrJON3VwoVLIxCFMqKgT9gh/uqk/kNKukY\npk/NXb7tBjD+ah+tIOXVih2nRW8yrvawIV2eRPcUya4zA4aWUM1k1z5PVXAi\nw5+me1Q5GFmzNjT1ltuTgSCdFgavHCVPGhEpTZzp50Wwq9SEednG0TNrNAm8\ndLo8yWNx5A+UYOHYKZFEPcaaP+MFSkkGqKjRY5xdqc6pSWoHroNXl0DBYXZf\nUGW34K5z6LQdT5XOUKkYBcLIESQH4DTHpy0rH6vSGRs9yvcQCoV7oars4juU\npQaNaSyBhRMivEQtelrcrcY1zZOFgr14oecvMsyQ0cwrWkl/2HOrmR/63VVG\nxK2c2GY/Th5x/jKBcodNswRUwWNRhqZEoaLvJ8Jy5m4RnAfWfG2UPaRrqNs4\nbpacFbQtfJfmwCNlOKo/72TPkHlQPya29ESjQ/h1mUjG6aY/jNQXhKUxoLvJ\nRpxjEvXrs/FZIHNSrJTlPf1WOHQRbWcN4aVgR/B/OYeWKT3X6ecJMFXRpgKz\nwq4Yjn1I/UxT/NxRLyvrpbzivJieCvzhOT0Ur7AI7z4UpfmSS2MpaV5w3ZDq\nl4d/wI0d23yvVz+5t7bknCAq+Fl0EK0e90FxDGoLXQRa0IhpXhAork1ZrSsc\nEaiI\r\n=fhx6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBKvqRAmYZlDi0EWseFS0cs5at0gCUHOS0kJKJTeQF1SAiAf3m0SyPLx1zsP4pc7yfIE9r+piA7Mdsz6PvjzSH+Sfw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.32_1592765883685_0.5199302784689996"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.32\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.33":{"name":"@leanup/cli","version":"1.1.0-rc.33","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.3","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.3","@babel/preset-env":"^7.10.3","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.33","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.33","@leanup/cli-core-test":"^1.1.0-rc.33","@types/node":"^14.0.13","autoprefixer":"^9.8.2","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.2","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.33","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-grK2GNeRQvPQSdyaTrSx/rS6LSix5EbJuCwBxrJapwGDxNLpt34F8oNS1X2QEvZoMGH+htdL4SwWgKKk+uCjJA==","shasum":"3f6c982794c898812cdcd55297900f9f3f714026","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.33.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8Z4ACRA9TVsSAnZWagAA/6oP/Aqz4eyvZI3qg7ORXaIS\n9qkWrxtTLNapSUrq5FN1SDeQcsXRoBrZkfQgXW8snCp1xyOFBPu7rdMOsqbU\nx9DQdEnW/oXRRmreX3HBjxifOsGerEYybOh+yo6GkJiX04fseXxWPOuGLsC0\n9l9r6YK0wTP3MvRkrOgtIl2CKkRkm2xyh9UKW4YXYIjX9w0s3LlN2zOeaJDU\n5MqfsEUtuoPi9jYrnz/4Hcf8L5eSdWQvNvY+UELkTfZwl6mffCvl/xt+ne6d\n50+cSwIj70bY3ZdCoIBbdh47dALf+ntE2nbuvx7TBqU9aw76Rxn7IqOxf6Ha\nVRNPWrmW7MVE3NBWrVGod6T9lEA9TEMk9udLVIPWwjVstuxrzquF1k5Cybnj\nla2zlbbF9lk0qRGCfAstjqcOGrKKeCtJZLrTmJcIH2APb4d9kq7+TeCKxWr1\nup2fsYtJtDJpaBy95oFirLsd67LXm4GJVbxDOgvGUuhNU080wJrM2+YADNy5\nAWs7ME1HdJ/iizyfMek4bFL72a5d8rsZYeYiZ+EJaBBGynftgCVccV77QOzF\nN/SFWHW9WM9IKf50k7QBk9xKpJJLJcsQhrO0nkh/asbRMazTtbpNX9kdO9HJ\n9RKvUVZHtJwggJWE8T7vROHAtabXSD5erCM++V7mDevMrb5igL/XOn+8IqYM\n05MR\r\n=Xi+e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBRaaflVBXnzV7GWahJQw0WN6+yJiZgjjFN/K0r4T1QqAiBv/I8oDrKXqofwstEPHx5XGjpn0QCp/XXSbin0YdqAOg=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.33_1592892927588_0.36002367500660193"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.33\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.34":{"name":"@leanup/cli","version":"1.1.0-rc.34","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.3","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.3","@babel/preset-env":"^7.10.3","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.33","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.33","@leanup/cli-core-test":"^1.1.0-rc.33","@types/node":"^14.0.13","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.2","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.34","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ybGrqmAry4N0vCG/P0o9QKIchMbIL46bSe6jwDROcBiwD9BLOHS3Ls7ZSfKR6t8bm68q8bLCrJGDZdyCKp3IIA==","shasum":"3bee284e2ea2eb3a08b526c23f44330353cb4540","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.34.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8udwCRA9TVsSAnZWagAAOFIP/RNiGRCnWmZiJrO0SYh2\nOtewM5k66IHGStIKhGUXrTP4D8Z1MBL7i3KyeZhCvQXZ1nKTI8iUJC4w8xbb\nARx+kkOGUHi+OBDL9qHzias0JtEG/p1FPa5GkD3XTg/qILaVxElNLpHeOQ/6\nKJJMgBnoObAcQlJHZtsLXSZeKB3A+qFkk6fZzl7rDfgEbuaLDJQrzFTLjgj8\nmyBbLp0vsK/NvTMn+JyfF1ubneG16c3V+JKxAQfRFAuC5HuG2bRoy9oowjup\n3XE/LPw4WiQswMt7MtoDbe6mtR+bPrrovkG3qQArDQVHSMRvze7gvHC3EbmI\njFV/OOy/McC0r4zxPX2GTgzF24YahfEsS1816atECgSiKOCMXXPa3h2KqfZi\nrw9WAKnpEP6sTR65Rs3CerIT8J/zbaU31aY7piMALf9gUdfEtkwe1sTc9h9B\nyX1XnrpgI9WyBsMdCvRrTIEfOZYgg5Uhyvsk2TRD24Zn4oMmXJB34w97H1r+\n2NupNwLzPDLVrlm89NrcaPnF0udUWEttgQqCKfl4BMNZaRuQOpQjfnnhhq15\n+dbROEEAHjIgGeRUnZuAmV76iXq4n1gg5vpwcXzd+5a0Hg9zjccokzuYJSYj\nvUhRbmYYpN0oKJwvLb/C+q5k8Hz6QrBkCTdVEGZyPuJrHKlvoHh7oAzz+esN\nmQ3h\r\n=aSDo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+ZD7HI1W32YVmCnbzFMIft0n9MyxZre60HHR6qbl8nwIgfuDiXjcbe5T0Jors1klSDm+qGW8ZKitUGLatbq9kdvE="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.34_1592977264206_0.8406503465566915"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.34\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.35":{"name":"@leanup/cli","version":"1.1.0-rc.35","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.3","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.3","@babel/preset-env":"^7.10.3","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.35","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.33","@leanup/cli-core-test":"^1.1.0-rc.33","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.2","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.35","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Bbh4MVdKPlx7cCGeGAeIsP4gjG1Zavh+47tAMG/a8OkgzO2UuWDsV0P9zXhe+5E3esklI2QGnEkWvNZnlQWNOA==","shasum":"f7b5be80f513aaa06672915f840aa53f0b9600ea","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.35.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9CeSCRA9TVsSAnZWagAAY/kQAIaHBBEq+XdNi4yp4yrr\nmUfa8jmw4AtH+0MUcPDK3+oFRCJ4P9zGRQS5ClxMhGfjritgfiEItaCoNUY2\nuvkPAVi/LQdbeTK3T2xWDLwzkANFdVrzGgYmJE5LkZ8ka46kqLd84K05sYOP\n1S3arVzitkeHAtkwqD6BQRYl9ZjzUSoraaNkcKb9m8MmKxr3F259M6Wj0Sj9\n91JuXaPGPyY1al4Kn99IXLmeLVjOV2VqencYWK18itxEiAbZeHB8kXGg+nAB\nRcq8f/D7RHaViNtXE966T6Bkho4rFdhj4/1ePKEP8lykn5bi2GcndGRDhGZ+\nb4CA9WPwoTw+nVp+M2K3PBduWpa0+lOfhr0M2ukBiPCNaUrBQG+rywmTJzfK\ntHzRgLj0yb+IxXMBKJvhgxumFWXepUT25wMgj1sFaIJFVGGrntUzdJVdEvNA\nJVoqlOGRTH4QRAQ41R0ps9S5u+Tktl6rIK1s95gN5Z3IAg/Oj/s0Ny8Tzc3x\n89jh5YhNSkHqLQKCG3LThkcGGqhZWtBDRsuWSqOysa15+Dc5eFEQ4oU/Qc2P\nQPeERYexZptr3G7uZStbqtL60xYvM+DbL2M4eqgfDywaT9aAjUMUhdE+7QrY\nqovrXVoqBFhos6RwiR2ZnTWwpEp0b5H/1rR0igwTVYBzfjhQV3ioVz2ZPxX1\ncvWj\r\n=JNvH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFbZFTALM2Av2sBb4mtih65OxqXGYc/8U0oS3Chs207eAiEAu0zU/UbkPWqg2syEJbtVFrlTLWRFQQ7qV2UG7KIhFzE="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.35_1593059218006_0.22073892459310196"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.35\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.36":{"name":"@leanup/cli","version":"1.1.0-rc.36","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.3","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.3","@babel/preset-env":"^7.10.3","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.36","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.33","@leanup/cli-core-test":"^1.1.0-rc.33","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.2","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.36","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-xZX1o+KQ74m115tdok3HnF8BvaZelDm6Qyx93yvv0OBcerEsS695WaqI78DMKHTKpX6jMFihMrio/fznVpU5RQ==","shasum":"fd5dff83168e45a40c5712579f829912f63058b9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.36.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9CxtCRA9TVsSAnZWagAA0LgP/iPvZPVWw6RFsAxMHC9O\nrasgpTwrPALHs8dNAD/wUq+e48+vmMJA932UoIkfHzxcb4VxbjjEn+Wp7/NF\n74nalwV1ZRHqOIR5RJm3EmgLXrO929ns5XiKDdOJrKQPXK9wuaa5ZbA0waaF\nY0k/QlK6cokJOVrEB42s2+wtCUjXgDM2+XbwySTM2EsXMCI++11ZoNqdrW36\nevxgulz7RoRpFcK+SnH8rWfag22l+5pNCJzCDlWTFRxPvbMwHdQQFvwEQf4E\nXbRybB8CWCDArMJjVVfAl02Wfa3B7SGXw+m3Q44kVGhUn5bcozkyAsU2aSLd\n7OnZbvbSojWrIhR5MMgbWwuWylgyfSjd6qjh5gyhK0g0R1TcdZeNI2an89wg\nGCMYGtukWHXeRN/a25U2J9eF+UlLv1X0Tdf+B5ROBUqDew2afkdRE+LpFuzg\nYa6Ek6j3w10IhF4DROVXQc7EDT3QyB4KlXLQZBVGPDvH4dG42A5OGPoiNO+Z\nHY+mvjUifMdaHmR3s8sJsJjTPMH4EcMgm++ws6mn2SzCsqU7ZsoTm0kZWzt6\njpFyTHH0nD9hI3jadsTstx6+3QLT4/7QTPCQC2OdGyBW3dKl+M+1tWoj+lV6\n66hwPKjmM+K7ebblIfMbDBd6nAfp7MLoxMS6mWIy3PPHL4cmlwSL3y7Jrh8u\nzs7a\r\n=BOa4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD84DEYMekbEW7+maXkOHEPQkJeWpl75C/WCbnmrGz9ZQIhAJb0FGbslObF5ajeTp6smU+/Wx4jiw+s0cFcJ9lc2p1N"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.36_1593060460598_0.4977084488505419"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.36\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.37":{"name":"@leanup/cli","version":"1.1.0-rc.37","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.3","@babel/plugin-proposal-class-properties":"^7.10.1","@babel/plugin-proposal-decorators":"^7.10.3","@babel/preset-env":"^7.10.3","@babel/preset-typescript":"^7.10.1","@leanup/cli-core-e2e":"^1.1.0-rc.37","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.37","@leanup/cli-core-test":"^1.1.0-rc.33","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.3","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.37","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-/x6IOhdfWYnoiLLbNITgWd+x2zEDtzGtxfOjmKWdQhrt8Iko+u4W6pK8k7HcsG5LqNQcfmlZmtZQAlU2FP5C4w==","shasum":"8f96a03e20da52f1d34363d579d2c93b9a585a58","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.37.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+lZzCRA9TVsSAnZWagAAEaMP/As0S2ygc22PwJJpvAUG\n2W2FiEHxK9SLmO726fK31lPXpP/gS0bzLzwmBP4YB9yhZ7Br4dmK4C9ydQzq\nhkwwGSKQsS/yvsKKix08SpChm9d7XoNgBFdibnV7tSBcny742Sl7QQE6EKPK\nw6WzefvxgNz/mwE9SF7O/bAblGiKE/HXB4PWMgO1pJgRz35djlPRIdkxgDlr\nQkmQcG0Yla8qQHWbvmSrHPtDwoyC/iPyEvNp3QyyMvVSZuNVjiHMdMf6g6hR\nizWvKHEQMPAAW/CI0FABK1w6Ssk84F4OlCYI+2mexeaLKgPW7nwo5u8kbwy/\nYHGYAYYqkR8sZcjvc+2pyn4Y10c1CIDsU+d9v4JKMZQtPkpFMUqJ+nMsXgeP\ngXR3sAVQ1oAIHokwS88xxjQW1w5xazgIemaBBnyrJ2cuPEHjV38zSVFk/Bq1\nCbrfKN3FFL6oOXcF5PVUTa0L64PSSin6hbgJ4NxhL9NJ76ncrs+Yo68p9VUL\nN0lFmu1BRvaSOtb4tQkx8+/rzuRrJD9IHioptDKkOa0D6nbGWxhItHPe+5Kc\nuugRoymSU5SSLaUysuaCl9/ldLXbKZU9C+QEX/Ireozp1fwc1xp2UN8c3TpH\nbKr85KiMG1jDuThITFzIAN51+3pOfZo4zco8h3GtxrkmVLo9TM7yleudTBUg\nHGxZ\r\n=Bdeo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDN9XML0S+YVl/HgapvSSNzknYh953kOskUTjSk+5vGngIgJuITVK9I9Ic8dzZ4sEggSd4fS9GZvLf9QEJe8BuXVNk="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.37_1593464435137_0.6150167855640352"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.37\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.38":{"name":"@leanup/cli","version":"1.1.0-rc.38","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.38","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.38","@leanup/cli-core-test":"^1.1.0-rc.38","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.2","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.3","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.38","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-APeM01Bwq3qAc4Y8eJyhgYQtL6prqJwgVYFI5mj/D/tNn7VcCb9YXmFV2khtR+a8LYu8K8dAAXDwnanmNM+CtA==","shasum":"b9b19662d168bc73842020c970d9a1090702369d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.38.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+45HCRA9TVsSAnZWagAA3pMP/2lkwRJA7vIONIJpXlQK\nRUHo3tG8UjvowKXhg+OzUzmYc0R0zJguyDKeXAPP40lox8OPqKNC5l2A6LEi\n9PgsGowzeBoTqzboaZy32hC0swf4YzPmnkNbeBjGACyPkmq9FbD9EfU3VrPQ\nJDnxVzPbvUskzCLbSwgp+Tr0K4zXRyjvMvKq8OEZtpHTG60cCqKOqOSR6y6q\nL89BRjE0UJsbPZJI6ljbFwqv7JHPfaxfowqfTXD2+m2URmHJ3iugNlWB7ofy\nLoeqkbOXtPSM1VzngE8IGYr93CBg13LxPqv0J0IBBWZOB2iGYoWuOUVGwRDL\nPVF9a+x2sxMDj7+u81ahovbJ04wFQHkqBqntQH2J/Y5YqNXZOc/Osg+rzW1v\nT0cs5j5rEZ/3/RyP9HvBh/6G3XPAaQDoIRx5L+CSjYZAYnb4vbuRxK27XWgP\nn+TxjUh4oOvIjsaHuvNfJrVJR9sHnwH3f0ymb4GId4c47LULYZYjys+eMzaU\n/o9C9c8nJA9jPr+4SCTZK4zDedIMpxizOWTN3zkEqF6hs0YUZojQ+7orJAIX\nMoIuQBi883t4bF18YnKyD1L9Pry9fI8Vg5tJIDyEpwNV32w5meRyWAJ32VIM\nZdR83gMK44qCD3UvzWva4YG3vK7bEwbbyfRZKTD+bgrhCfKMAdVJQ6emUj5B\nAuvA\r\n=G2St\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQgzC6tm9WJt9SwxSiY9VlnBo/L/svmKGyg99NV8CUzgIhAIJUd7WJro2I0pF8R9MiWgHm9x4NKc/Hr7/0I9aFu1Xd"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.38_1593544263432_0.010586641222618542"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.38\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.39":{"name":"@leanup/cli","version":"1.1.0-rc.39","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.39","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.39","@leanup/cli-core-test":"^1.1.0-rc.39","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.3","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^8.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.39","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-j3n2Vv9dQZz7HScLEBoS3d5kPhEXz0PkSIBU7wA3PH/g/YnkjihZas9Ln4OsFdPOuHn5Ky/XWy2qTWpT7r9S+g==","shasum":"4a02028457513abc9334fa0a04b588d2f32b771c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.39.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/WVPCRA9TVsSAnZWagAAWGAQAIa1I8CGrzDg5k6nVAEd\nqu0AZTbwU7dvdqRSSGx4drmrfjZ7ghwhVpdj/0P2TZ1dYf7WFJQZqwMYObiy\n6WSHTM410bmzlGi50RiNyuC4It3yRpX/witS4IxO+pv3fUXDzxM4igO+eBuk\ncnbsdaNfcIceL6EnPzxI681tnIdW16jCM3yC5HRYDbsjbxdDOf0O0nbSN04q\nzwcDXIV7Busrf6sLoOzlH7ffuMESy4Ahvo9G8QDNt3katO4i1lCzN2X/FR1G\nAVg19Mvyt2Edvj0sCRCpjMhgq6zaN2yC1gQX99CvhbGnIgjaSW85e91jUB5v\n2x05ZmXWJ6cbT15tFMWpAPojm07t8KjKKzmDJi7gD8zXhzewfwSgPNoOqkyW\nOWzBsMSX4WZ6jB0qoB3FZ5cSyvVHMCyYm5lSm3p1jfH0ZlFyk4b3TrhYCRaq\nwfXgGbYVNJImflsx/OTUSQos032fkzoPpse2jOA4WV8GgVXyyy7I8c/mL4to\n0eH/nvpzruAozaw+OcJBF++ao8JNy4YRvLZozcSYRT6XG+0hPs6+NBlWZtRu\nc9Uhy23/sQ1buXkMTwcHPN2dJEGuHQCG+mWoIAevBNXAIAsDvxlnbULcm4v9\n9BVygQKY6OuZecLWPjrQmZphWDu+RrVBn1FpDzZUEuzKQkx6PbzetJMykCud\nLccB\r\n=Fazd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXaLTUJFme8QP+DWEiZ/QkSvd4o9M4A24g6TdrRa6MSgIhAPIyT0gMKMKViGg4EaUs2KJ2a32TMISZXeTLtL/a7fmo"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.39_1593664847373_0.2983664562145165"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.39\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.40":{"name":"@leanup/cli","version":"1.1.0-rc.40","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.40","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.3","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^9.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.40","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-GtXlvqCcPE/FjFKCe5e2fEhqo2QBOmnKsfQF3gARE8A0r3A61gS99f7kSh69LNO7DOJPn2zrNqlTMdxORX45mA==","shasum":"f61217486612213d7be35c751b72e2ae1146c37d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.40.tgz","fileCount":12,"unpackedSize":51257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/ftdCRA9TVsSAnZWagAANKUP/2ym/RlKpc9TroRH9atS\nX1UCA4Pu9yhovDMqnCAQLsuQdzOe/5x9B9+IXfJUyulLAzF0/4vv648Gd0xb\nKyGnnMGACejyVwJsOyTuFbVXK9rQD05RAzBIhsbUmOPTtWKuCuSzfrvHhmJO\nt5cZCe6Q39KSelO5EnmelmnWqSGytUreAE1VTOSNMGCamih5cR6WbgDHbtpT\nI9n5wX+cba/5adk1u5vxLwqoDhCt+mWO2We/t26x06668IfoPEVChtZal45s\nF1IeKA+8WdsDiEUAfr6NUcLtpLqylnCRvGH79j/gL5Cmx9uHm1NkItfUhtQz\nj9CZbbV2FAWsMyOliUFqn1rcx6DSk5+JYNWP51o2TDCPRY9Ici3VS7bTITew\nfA8kdawmJfoo5gTLCX87wmBkrQ+e0EFavNrdLbeMw5mgjAPGkh6Jy1+23F4u\nqbv7S8K4zR3Ko8deps1tLyowgXMFA0vleSvBT00gHEeDmVH9NnfegyKAkHWE\n2WdwnO1qYW3KeGHpRSM+AmdwA8y5Vq8hjJRFqAS/TrLOvqXlWIcQ80lZU4Pe\nOGNSZow+sTR5iDUaBVFaN7Mc3jeHDQvHdcfpHW3yXV0SmY39bTaI62BGPh7n\nsfMk48bfX2Xsr6lRispKwMjp1Edbiy0twHYSYneoP8xHZT550oCO7VXMM0O8\nP0gB\r\n=k6si\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXuLyAXBzbhwp0mIEyEM0LpNsQNirPMIUK6wjRZ95UjgIgUMBcvEBdKMfEHA2ppF/s6rEQqlwW1IIB4BBTjAdiHk0="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.40_1593703260524_0.25663983004059343"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.40\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.41":{"name":"@leanup/cli","version":"1.1.0-rc.41","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.40","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.3","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^9.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.41","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Ya/FruP+AWDAFKD51VlrK5NyktlEUpTW58SmkkrbPKy9wZklrX7FZ05Y6OGZJswjkvzuSJ15uSzOIrNguMuPJA==","shasum":"3397adff9bf45b29ad55423b1c7656509a43807a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.41.tgz","fileCount":12,"unpackedSize":51569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/t2oCRA9TVsSAnZWagAAX6MP/RXul8LclpD6vLsoWMwJ\nXP49F++3JxR0dR+6jqoDSCjjVW4Djgw6HUGt21KteA1PA4UO3fLOfjHGyyny\ny2WHy06iiy+9kggbMYj4SWJddY1FUjOBBG2XyjeNAmCRDLmfP8L6SXTl9FjO\nGdvK802iyUMr6GDzbn4JncQs8npej+FzVc10+T2+LmXcePmwhSQxvvGN2IHQ\nIvobxsYctBuKiEsmWLLXdwVz8jaqSxOj8q1pjDq74KGqu2zNB3bcMSFSGKu4\n/TVyZnxMkXOFx7sHSrgGqtpPk8YNqNGLoSY9J4/bSST0QasBAfU4hiwBbCX2\n82LKoscTe3AMoh7/DxgJwH55EqSPLA0mqLd4Y0aMvyfXqitQVaHlp2ugb/KL\nq9RnsGEl4lVFGI8vpwFyZMw4xYapl1YzL816IDzIsqDctipMZHiZal5aRXxz\niqUzAtAdxkCs1pWM1j9hJA6eIjGcpaqjXQksIctWTADD8TZ/QYO3aPaWXWfB\nazP674IubIlO3mFAxTMa/n0pSWdsI2m9p5utxycrgPHHrENBIJbButOe8xGc\n427XfyUZByCrf2cfJqAGY0GhaC9EVpc5+HESgu3knjVXWUaVpxwaLn7oK7os\ny3Sxu4SAJ2aLFvWxADKtz6N23fkIjLUVwKIBk5LT5UyuXuvXxvs3WAZk/tbc\nZ99+\r\n=dgfk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBmUX2uN99a4s6/VrV+SIqcJgQEYqpARby9pi51inLnEAiABYX6+1yAekQHtlTCc8hUlpFsWnsKTyZcwAgj0wJH5OA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.41_1593761192138_0.20258835481926485"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.41\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.42":{"name":"@leanup/cli","version":"1.1.0-rc.42","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.40","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.1.3","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^9.0.0","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.42","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-n6AmxWgNH1/NFf24/4zFk+Q7umJD11B+939QC+1JuOu/J0lbIEybZVycODs96PjdEgNHOBwCPbRsBpvGc5OsZw==","shasum":"adb686293b41b1d8d15033820ada5eb7bbf69644","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.42.tgz","fileCount":12,"unpackedSize":52003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/uHTCRA9TVsSAnZWagAATaIP/R9U99fTYuNUGhVbMI7b\nfH9O3OLcsKTmHzS2gXsYjNQEljWnsg8JvtASfIITfuPDHsiSquRysA/63dpV\n8kdcn3njLKsICD3mmc0hOIGrBzea3fBT+yVE21HoTe9kdRCQQzcKFMCiJhKD\ncl7fw+xt6bBbp73qjJg4oXGKYTuXkKp0D14Bg2wdZlMrtZ5lp3wqVEdKXpVy\nbGwHlwBFnCFdQe3Vwhc7ZF5NdUjhklRgLz/O/eGcQocj8AYDlI/coYzKeaCk\nI6ikQ8FyfRBh4bcgqoUOhkxgpuj9IYfmnVz59xPmG5YaiXy9Zc3kFrQzBT0o\nmdY14ofhpAXLmzPOoY2FPat/Z9/i4EbEgy+JV9of9V/LMz7XK5PZxUn6Bprb\n6vfGFKfXFb5XsqGabAbcmoiYdFOeeikW0Y2+nOdRxrQhvV2MwYCS6rZ3lsq7\nWGVZ/BL59a5b6zdo8b1hS8TIDKZooV4j6qpYFpNw68rfqg82rhTWuFGIAzlP\nGyv2c7/ub39MQuJMCsr0RBAg6s7+nUzLJcJGbUES5+fFM1SKTEHI2htJJ8OA\nFjWY2pClvm6P2z54Kq4WX8AGinjHkQJqNLO78MC0k5NJ8/40dH9SY/cxCFaS\n4Tambdau9mYXfCZePhwumWrBLQCW+7IogMADbVeTMAguYxyU0tyelfCiJtVu\nh5RC\r\n=fDsL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiq08qdFXts7aXduWEpipjzYuDkBid2c7db4s0fXwNOQIgFLI61r9/v9BSWYEnyJMeYypQ3o3PZXtF4e1C1wYduFU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.42_1593762259413_0.9129001584908603"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.42\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.43":{"name":"@leanup/cli","version":"1.1.0-rc.43","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.40","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^9.0.1","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.43","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-11ftMqlVd5Z4/Hq2kKbLFmeQbXhX5WxJD8yL/nF2S1im0zO16HYReeTYLeApuMTkGHJVafxfFXNxeMP6vkN4WA==","shasum":"f7c25d96a5ced640c3701e9a72e76ad832851d3f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.43.tgz","fileCount":12,"unpackedSize":52003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/3p/CRA9TVsSAnZWagAAWW0QAKOLyt5mEoqwA1HT4EzU\nwbJ4PDoyYBTgOPnl6U7AuRBYIEXxgjF3Z0ecd2jY5hjWz3HGBFtJRYqgVzUW\nGPEGM1EEJCJ2qrRX9aEGMYDSip/EolYYQHCcooQwzG5gvY2v/fq8Opd6hCf1\nmJP2aQ4LculwCOaQBpwDFUNr8Hdty3pGzA/+2jgPOWaxhkC3yPuUDcGWcqtl\nJub+i4r7iUXLcZmo9HKdjh5Ym1u6roQEx0w3T/B9QrJZnEB06TpFAoZ7S0x3\nhuk6pDwoGupqf11XfB1IMC5gVIwyGQ9SYJDGYuDKsnpmfS22H9ekuKRaxSfq\nHKbz0ipxVszd1iY0PAYvKC9rDsSow4wOVQLhnvCkw5Cytx7LVo+1zLOMNMly\nqK3Mb0+59VuJgHNOdQ5ilZOibAixkB+5zo+uZoIP7+LNax6I6dsADqSoFc/S\nFDnBFUM7ro3qlp3EDbinyPufnNjW20dwMT0DWQX6PD2pixEGKhpSpOAHGtlT\nW34SXpy1xjZDg9w6K7wKMX9nXb6D0StTRqRoq0c7xYgHapiFVuB/D2HaDKTW\nBxly8s+tVsANGIrRe8HJ2yGSAkIqYp8Yp8sVlf8ry9S6b4Lh34muGdccsOms\nj3JOL4NYeJnLhiNX58F1KC37iYFLuPWDTAxiK4iuah31nMq+9qiXNjbp8lyp\nUZyK\r\n=dZRD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFVaz1itmnDJX4viulZFPyHnppao5vvLx++3PrP7lUm3AiA4xCVkIZybTrv/ep+ydHuTpbH2mhiir34wqUuNp1zZNQ=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.43_1593801342428_0.12464687374494354"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.43\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.44":{"name":"@leanup/cli","version":"1.1.0-rc.44","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.44","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^9.0.1","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.44","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-hcnLsON1hKAgQY1jcpt4f5VDOnQzAJPr588zX7Jszw6YURQYsZSKY7FgK0ScwwyqhOfpdVgN21lHKmMyB83LWQ==","shasum":"1bb8d8d25b9d27527b0987a5451867a04dd23a3c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.44.tgz","fileCount":12,"unpackedSize":52003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfARJHCRA9TVsSAnZWagAAJe0P/jLffHq8bzVwUYjxZutk\nBm4m/qQzLX1SdM2JmlbVc6P0cUfZgx+4K/SFepi8C+C4Hl2pIGopq+YXpyVI\ne5+8mZjRbXWD6FUhdHN9e9kEnwGJhTne3krFd0y4GOt37viVZSjal+VX58DC\nOuvTPzsKSBAGgSKc9SBxD4zzuK9a26WBgMQmU168at+p0MZmzaNVsHgHAhJi\n1chIHJp4QX7KICHGI6xg1zTnykvBs0IQESIKpd9GryXqJu+lD0bWDUIqc+bf\nig+AkzN7KoeM4UPIrcgEb7HyA88wdUq3ob8PoJatHQ4BRDKqW+1shyBQb425\nX4f6cbMLwu1BMu33G/v/umGHlupRke6EnPTzae2rvD5QvP9bQ8/dg6C27j4v\n9uhYrZZIpYJ4IDL0F/Kgwf4341Ldv7kmgjdyU1PoASgrWM8xxtArd+YxqoeW\nZpOTwWhhS22zP5F2GaPyOeQuwoRz4zAjMItVgQdM4sBh1sPL6Arsf2/ij70E\n1f1EgJY1gpyxxsDV2sOpdh7iDsdh1ssJAtHhTRjxyRn8a9eJlT/X/7gT1xS7\nCWXksO5TKMN43q3ALMXq3l1OoDzrX49T3es0QRo4FMFwjyuYQ4FuPf4cCYSp\nnt/minYWJo3+TWw0qMKjQmC79MRM6bnWI8PJYfu2xYVeWoYRLclQNqGBtyRE\n15He\r\n=JdlG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5FsMKAPPmFai4ycF+nVfacR0MEnDWENevuiTSHTjhkAIgarUc+FIqJ2MU7f0lYk24xNr9z1uwgn+k7XR+mtf7pxM="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.44_1593905734493_0.7435716862142856"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.44\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.45":{"name":"@leanup/cli","version":"1.1.0-rc.45","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.45","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^9.0.1","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.45","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-rn6fzL+rJj+504Av7aHfrJSdi+MqkBTSm+WZvdEXtaNWpSiqcqQzNl2KgngOq/3tir247SUdCGnQy/J+bTktJg==","shasum":"a6020b04a19f9344b4e9018fcea44408e90d5b2c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.45.tgz","fileCount":12,"unpackedSize":52003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfARfHCRA9TVsSAnZWagAAed8P/RThwSq/ykgZ9retAKE6\n0vUhIgVuNDynjDFrnFSOtq370DBQl12Ymb71x6UEdQBVe8NuXatPLMSa1KEZ\nCmNeMyGdkDlCEHN36pXnlFjMUQ1nU8LGm3GmTF2nB03aTygVrI7zifp8XyXE\nFn8Cb/7EFkNZyJPx0ljlnI5E8EJCO2KO/m5pEEIQya6Mtq806SYzGmN0e/cM\nG85em3K23dZAxH6iq1Qb1ei/P67nkQTpYVTd4n5AGG0lQy2qzDlW7mxyPWkD\n2qhcZFv0F6loBTg2T2asHeU/5cT0rwFchKbuaZge4hILb2pEjsuPDSX1RGls\nIhMKbaap4ieISAgWo0Pp14+wPJaH0KPzjIra3B5mvmZKVkFhW3y4QG5D01Wj\ngK289a+b0nUWI7XDVFJEinl/j/zfFcTTjC4es8w9veqB7fSQQNtjK3S/7fqL\nlhtL8vY1HT8ZbjO8S1jffMBPm9i1bDoOJ3JMmmRGQbKEN3I2vdiZiORYOn9U\n7n387WIBx6vUNecFf2ssqOyxSsfoNv7dfizRyaMwiqjNKwKVMUuA4gIx6ng+\nztrrQMKmG3e1bZ+O/rMV4iX0GOT5rrJdDRuIe9KVXmv2OxX/j1womIG5kcax\nJ+GrniwD6y7hDHBZsAMy0kvXHN3pEQ7wuuRZL88Rli04Hg+YUlvhNuj7lAl3\niqf+\r\n=MRFA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDw1VRWFF+9kd7lB31tCoHndyWzcwtRXazZKyl0eM1nRgIgbZp/zRaw3cuNglzLz+77kaGIR3mJp9ow2UorC+a3zUA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.45_1593907142695_0.48755849388385686"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.45\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.46":{"name":"@leanup/cli","version":"1.1.0-rc.46","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.46","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.14","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.9","sass-loader":"^9.0.1","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.46","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-pNdc2o+Lp4gugTNB/QvTxljsSf+MaYhY8VPFOCZKSEY1GhUyI9hd0lfeDT7ycsh3AMzJSJT3xRKA/OnY9GihLg==","shasum":"ab1507f00af43ef47a941d17db2de4e7684bd2f9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.46.tgz","fileCount":12,"unpackedSize":52003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfAfDJCRA9TVsSAnZWagAAuKoP/ilYHgtBrg+m2FjPqA6p\n2xRvrfs9NwkPBw1EqmlFvXQY5RLlGITvjbCHAY5s8i8iov3grODZQIlZuSNH\nkS4VG5XYebSrHcUO5LCOlsq/jGWhFwWqRWCS1JjOOUsSN/HeXo/3XofZaBNI\nToDnsHAZj3UNPNLWoLagJDj0xX3r75Aa7FJAr7xqM3CbArysoNPaXT5Nvwjh\nZtqOgmxBM+eKP9yEn+fI608+TCG5M1UA7EggvlzdZZ1SylE6PxxAVBibiokm\nK0pKjb9w5JJc3KdzJ8pbKy8fWcwhmXcrYIv8tPFZtTaJUDSs0tS8B7T8Bcwl\nigAazvSJ08oaPJLKYZ6nT+0jhoJy5tlF8jJbBpQ36ZkZa61prq5d9sXeT7GB\nPt918gYubGH6URxpjbTfR9Q8P7aOUKs9FXdEVgMALVkR2+Q+UdI+02/IaYgH\n6SHigB80CX8B9cb5dnzz88x4tv/Qyk3o77D5zwAjJ4HslkYjsqH/sBu7EYdU\nki84qb2o43lE2O+3JxTOsuPNdlOSAmIKdii8J/AJMXr40nET7goTjSPgk3Ph\n/0sYfJyquSIALbHTXidygLz0GbRjxVjVgvmM8RhQZGd5Xz5vNxJy6rncdqlu\n0XL1aUU/KrIKOw3wAnCR1+yP/qL8cEbOvxbSDRclU53n32TIkdsrREnriJUQ\n2ilH\r\n=tRbo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZNCfkv32BP6lXAXkJecu4vgV0KyF6OuyNja5CUlGRQAiEAsJwjzODACXMCTIdolb+6hZhqkxPqy9xMY3kNHaoxG/M="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.46_1593962697099_0.48002383091327605"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.46\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.49":{"name":"@leanup/cli","version":"1.1.0-rc.49","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.49","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.18","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.1","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.49","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-+osDXQ2IK4piqr6F4CGgbH4Afx27lkyWb+05VprzDK4rwRx+oDpN6a+Ax0kiJM5dUkC3ElVrPZHGt5ifdk6bmg==","shasum":"df4bdd484bfc6e9067ffc9f9ed2fe09e34deef83","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.49.tgz","fileCount":12,"unpackedSize":52219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfA9m6CRA9TVsSAnZWagAAQgIP/j2qlccVQf2B/0ay1Pnk\nm3U89IMFy+cGSiGq5jWQ3QVQyG5WZv8U+i/ffBFSAiqTeC2Ln8zcxv3XBC9u\neyFj8qEshYk0k2Ng/Ds4RcunRyikvwV0isvD7KcIQBwnCPy7Exmnsc8CSAjh\n8EKqGXqUa+MsHoEW2DOOMsS/vJKGJZxMOE8aWgrhMVkkW0FnCczUAu5AdRym\n3HH9frJpv3rDC58L/NjUC58LyEwfvNN2b/bv+sNfc6H8pIfcTl3aztRTlV+k\nyyO6L4KCLimJCBrXYeBk5OVhYyUl1ag9kgVgjuaimoMbTJkH78WTgCr4zBia\nnPycJaU4H+FfsD2kkPKPRmm/3fF3HTdmUhS+aGDjVWIi9EHXnzKvyFEKKqRJ\nvqFpLBUIznHLZ3ArUIVjqUzCJIdy6tlj1Pi8o3890qrmXQSNk5BQ8KBVAnVO\nVxzDDNiayxCwKcjrsEeBfOVEtFwDBCngHT2lnVLyEFXbwVrg14ZIHnYL6tMh\noKEu5axCP9Kr2wVhBXZqR5JT9uUFUn30h+dDGKZi+++eAjuutOBA4GkA1T0A\nznd2ArEHzU1PGsJH71O2huakAblwnNhDQvD0b1yM+QAdg34swyBfJCrYvK4G\nMnwjkNa6DUNUbRYrJq/T+mI1MthmQXGtsSLypBAeAeNgeDYfJvNMQrZmoSoX\nqr67\r\n=XYMT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC87sVKogSGbsTlntHTbd3RvYMXQarO1bKg3zzdW4StLQIgV7zccjBs0LB0LKh2IUY8jCJfhFZmhiY3OVdH9wUTGsA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.49_1594087866283_0.1821434599109919"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.49\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.50":{"name":"@leanup/cli","version":"1.1.0-rc.50","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.50","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.18","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.1","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.50","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ILvxw2lCo58b1jJUI0B2+M6apVNmY6R8RoYVyz1TtXtXzEfFW2AhGXr54Utr0hY6y54ajY1qfrS3d8i9jJsqAw==","shasum":"41aea35bca55467b7cdd191233a28764277008ce","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.50.tgz","fileCount":12,"unpackedSize":52219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfA+CHCRA9TVsSAnZWagAA7e4P/0YsKbb/vIAbTZZvvPRC\n96lCq+GfJBQ5qJOl4b+kYdXM5swmrg7E+vWId3yba+6qi97EMaTBNWIHT/2w\nAUBIj3/7enPA7+Fa34bxIRtfO7ex8B7Nfp2iMF+bDM0qEH5mZGROw+HQy2PJ\n+VT1idZAM8XYMHAwg5yvvHYFdoqd8czEV9HguYTv++9rS5djMtlM9813jyph\nb3jb3h+GjobDEDOj1D/VyDxsDBgcFA05NCuzY5HVqxdQOcfrAltHKmgghFhj\nLd44EWUCp7S8fMPSre1L4v5C1e6o4yjX8J0H3fLoKKeiCfC96tCBYkdniJED\nL+FkV1ev91nEwN6mvnogDRiaXLIywJkYeULVuEi78YxUBYsZ8tmS6IUgv2ai\n29Trjq8Z25MB6m3FdGtLytkE/afuxx7K3KA42CM02jziQjXLTOt7P7liIfCp\nL1HG9DaM6GqB3owYgHVMzK6ze/wUJxM1hthX/W2INWrKGthv2zct5j3crO9A\n58cfIJF9Bw21lxPDt6AilFDYa48TM9lch8J1v5qnH5kUMh4MVCxTqj3eLSeV\nVcm6fRVTenU/3KCn8Wc/XisvOxxp8e7p5gL89kINV4oe52fbi6Bg7U9KVxtQ\n7AYLr13CUDh/9GdDBZ5wpoIYD5PmeIj9ErtAmntCTUDgzPTf7NF8IGJND8pw\nF2Z7\r\n=O9/C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6n1r8ukFf6iJC3Z9QsgT8vrSKKqVAhGIByXy4b9uzuQIgRT0jIInWqHgAZyupZwjLM7qxrvZhRLaoI/RKjrtFnAA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.50_1594089607201_0.31290206701959566"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.50\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.51":{"name":"@leanup/cli","version":"1.1.0-rc.51","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.51","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.18","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.1","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.51","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-25H8gVdJ8DJ0I6z6duenW4WveJbtcwDOgbJT3U6J6zmLD6z14aXtAeMe9tUwdhxWkss8+BXWxjA7Z5yYZId2/Q==","shasum":"0936d09e9be36f53e1111baf705f9637f829cd66","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.51.tgz","fileCount":12,"unpackedSize":52219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfA/FSCRA9TVsSAnZWagAAzvkP/AmQxqR/8gpQVqWNgzvG\nGCQbxP8voq63FSesmTtlxr4mag+btYVCRCyJzY8QgZ9fC9kMRcrNevCL1Gd/\nOei0LavbNJfOJ5kkLmOW5poE4S0kxX9Yl8/MEu6ryLtmtJ1gFGyHSM4JrWoO\nsgPIACqbNLD70uhL3+Fl9IoDvNpxuvRaDAULfiWDzmmqwP8vHNZX0VXc6ANl\nQD8DYZUO0mXBqvN4SiH3kVLxMNjrRK+tOOQp1PDFqg0ud4FnmaERv+mbvdeN\nHN9bNZNoxypL2jX1tpfYhtUhiZ/ppaey9SYmG91s77PE0Fkc2I7R1iVsdjHn\n3GKXH66u0MdFND5Fh2vb3RhENAzu22uoq0ajynBQ8MP3aXZCiorjAejYljn3\nu3c4pbtmORj+ioPR77J5XyTLmmssbE0lwUbcvCdctzU2Ck9scq3in1MR9Shm\nWZIfjNmXDlfhIuIjo6ohYCthrt2kDvu1cUZcATmR8LmuHh+2TwUXdJDJatyG\n5uWAsMjFELAZmX0oK/JAXXlmd/PEPTmsZT/jQoNrencF3qgQnpeSOIxfNETw\n1Rw4nL6uwhqz0MJoLymFhiPu15kw0qiViH14yN4H6oju+Oft1EKTHQM50n/x\nW8Yf/0PZpHi6PUXuKmsTlzlMphUR841jv+Y4/uUPkE+0fqkFniuw3cYkQPzE\nhA0M\r\n=sbEr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCffkYe4TnIdf98SS6/jI4UBvpw98bOfiu8rOwGco6yrAIhAPy/sa/yOJw9WwAhk4g4teWlSlCT2nwgrvj2kx+gay28"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.51_1594093906110_0.5421083227890968"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.51\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.52":{"name":"@leanup/cli","version":"1.1.0-rc.52","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.52","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.18","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.1","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.52","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-kGDGfm5VTrWHbr2HCoklUSMxdoAJUByARlRsTMRtPrU792aIM44hrx8P9zYy1kbgWzyuFhyECasmnsjDlZlAaw==","shasum":"cd9fdc962b45aef1637a46c0b4bc88d099f67c31","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.52.tgz","fileCount":12,"unpackedSize":52219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfA/RpCRA9TVsSAnZWagAAVb0QAItQsL1FhdGpRCszIA47\nFMOHumTXbKa/QLPPf5b/OwMwWoP6OXQ1TQ0zOI5cTNzqlgj9kT2KiDRBZq2s\nfao0hYclrq05XPAOFcHPAiQsFgy5xwWRU0UJINup7432XNhZKYoI77sE/NJs\nuCXrbWfZFqQhz2+8yCS6WaWjuqkXyYk9dBzU7ZSQduOPO908M7YouV1OHldz\nE4QjMDhBzhHPdn93jjI7iGG2z39nupEC7NSB70PGyGXxErkMR+mqvYPp1jK7\nxj8XBL8yyl5qniAdtsRTdykkvr7sjkuJZrsYhhO/OvY5jsfa9SHXaiUBJdHi\nNeVHHvc9jImv6wyyO4LWy2EmxCdrN9UJl/6eFEj2PPCRQI0INp2vj2z6ANpk\nxSBH8B7qgeWc1E1HVj9W9aZLfSUcAuKwI2ZAzWgGMRt/DgxOJP7mjvaaJ6Jq\nJ/+vvl1YNhxlkJuZ7HpanFRrnq/ex4KQhGZNx+e7xrQMWlKPZXE2mvuAOM8p\n9dcBeHh8S3uDyP371AdzO4tHwOKRhw9YwNg0ZyxvNpruij8kuT9OM4CuQ3/S\nkQegkFvrpPs6/ORxeZimeAx7YOm4c0SXgI5UUwXFDTkOW+AWqVl8S3EsLVEE\nKIE7F4RGJr1eRZrfvIfmMkngSqxUYGd6z7kh6wCKvXwUhImTZ/wdEH4W1xII\ndKHP\r\n=MJyQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9zjMxQTSnIU/oKiGahIfF4W7JyEdonUG/ANl1JCp/HAIhAIkd9wGZQmcUkThTVZlGSiCHLVZQYjoPZDF700wqQdQA"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.52_1594094697436_0.7236359608288108"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.52\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.53":{"name":"@leanup/cli","version":"1.1.0-rc.53","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.53","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.18","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.1","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.53","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-aZHanxofvVjFNMRWzGia2jJKoO0zljsL7KeGdDBQrQxXHOTwtB2O1NlwrkHsdDDZrxQfXmMWdMpoU3ytShZFwg==","shasum":"f6e84aa52ccbb31c5416b70b236102cfbfe46224","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.53.tgz","fileCount":12,"unpackedSize":52219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfA/rOCRA9TVsSAnZWagAAbTQP+gMXUOEFvjI6ienpmBY8\nfYS4/5gK+37oubJ+G0KTu6SgWJ5GquAUp+LmZ8WzcX36uRsZji229CydMj3K\nU6xtIWq7Hsq8qj/d+3jxRsEwxf7CncrIT1kDkPU7E95QSTyImagq2T8i+fJ6\nbM7yFpR/W4PdCGebutiaqHtZEaA8Sq09voxGMm+UnJr3rbyU7BsoK971hIx4\niztP9zf+voD8KzySMSy9XN0C6G9y0tVGqcbRyKWi5ib/dy/WESmtHWvTgXuf\nHP16km8QidLDo2WzoD5IeCHXReWdkOfPXE2rSqGoRw7fWpNOsMeH8hJcr+eg\nh5m+dBi36YGwXgdtdqidyGIqv9NSptFlv5EMO7SdaO4d5o0RQzuFSOKFoc1n\nJHnvBa1C2zpOyt2y1B88O29qoK/BgUXKzV2IARzg9k0qwDIreAZ4xLHK/iyK\nnpbSWGR2zuC3przIYY4FnqaJc0SMBCjp4dI8rjTIEd02f6zEmbCf9XVabIKo\n5sQbMY11aioqqmylQwagJCTycVTjnzcHmciGHAykiimcnSScmY6cohRtqCzH\njzCoPKiwS1LiqY4yCYz7dCxvLW00jDCQH2tcn+K2CMajDngqULgbFhxcAi2C\nBFXlynOoqj2Vz8fBppJace4gog1EElA95NX2fr7qcHe+fZbPEtzdJ4ZCfVC+\nJEd/\r\n=Fgs3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGbJDjGjG5zR/70pNbAsXUVeWu4PV3Tv4Oz0Ozzf9VhsAiBIevZ5TLzd126/KANuqsh08IN61I0hX3aoYRBUAxVtuA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.53_1594096333695_0.1592007358585572"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.53\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.54":{"name":"@leanup/cli","version":"1.1.0-rc.54","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.54","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.3","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.54","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-txv55ebdc9R8ZCmHxfnWqh0+76JoebRB+5kq/9hago1ZqaxF5odtWz25tmg9cc+aYwmO7RLRWrp+DXGv7Qhwfg==","shasum":"7cd374d5f643932541bfa2d31314205974dc286c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.54.tgz","fileCount":12,"unpackedSize":52219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBgrlCRA9TVsSAnZWagAA6YMP/RIZcvwR+kuv9JVsKLRg\nueLXxWgPpAoCi6RP8RfWEPYK2YWP+APLASbWU0or+6YZwOBgxvUtpLmWL+Vh\n6aQNHuFqui+LOhVRcP0RqW7FJwgrDtBMqSpijcEq5fCjbb4Icj0wIn9ppeUR\nUqHGY3Ly9Fdu7luA9vvCAHWnxwpWcacQKdbGhcYR/ejejaS9bSYYVanGahO3\nX80AMo7Hg6eMmr3B7pZDjGA1qiMEu82hGCpJINBR09PdMgtpjp161XtlxEMr\nIG1kbeJkrkcRpULADnNYujqo4/x9yxic4YBzwWBY1cH1NcPoLaw7a3jLllrM\nXDLIng3EunKrj/XeK0YSmcv87B70J73hsT7Rp3CjEGrLSlhA8PsE9dQjGSA2\n0KgdQz4xeAZv8i1t2z0BAJFzR2IZFB6MjDxCaP440EjmHbFnYd7myyBHaNuF\nY098lU684EZfoBOFeqdc57cC2TqmiwL3+zAKFPDl25X+M0Ja3SkQpBjk4g1z\npfyy6iFJrQcGSYedWT+u+X/xG7xzWBch6i17Xa6rx07HuKNJrS1EMLyjbhAh\nexGlw/TbWiQepBOdb9758GyPRci/8oZ2ANi4HNzdT/lwomeuu3HsVhmhAfwT\nc77LH6eR4VUdwGUFgoBAclUNkczkxgJw1rysLdytMOiXO7OYuiOIzZNE33zp\nmYQW\r\n=Driu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDwGdLboJ0qXg0eb4CyqNnI+3T0TUUpxhQLzosw9wkrYAiEApeErSB1QmE0AzWeQF6Frd5JGYNkUZ/LTL0Le3Xi08Cg="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.54_1594231524949_0.39293495906655584"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.54\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.55":{"name":"@leanup/cli","version":"1.1.0-rc.55","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.55","@leanup/cli-core-test":"^1.1.0-rc.40","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.55","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-qzri2H9NS2EZGPF03uuG0b+91LwAgT8dPWBth3JlpRVsuC3KY2ku7BqwG0/bkNJ7h5enxaZuG0Vb3ziUhpHVJA==","shasum":"fc2a044c17a1d36eb6a61f93a80b9a92c0777a9f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.55.tgz","fileCount":12,"unpackedSize":52219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBn7oCRA9TVsSAnZWagAATHoP/j4DQAT9trabdFri1ccY\nr2g+mlIgdeT0VbX6oi3H5a/DglqtGRKxIuzneZiqfL5CHGSt/P3Ma5IBqPFB\n+GAxEvXluxY6dqhBZvBAq6KliBsjisiaE4QZSpXH4Yqeb7Aab/TXzuw8XNOT\nccdzNLVWAhZ9WdfJiNwWRg+kGguqXZhdW7t1IRrOiya2sA4lZsCuFmh/efdO\nrJkxPayxmkgOAM5Et4SGt/g8+9X6fXSMNSqP9QY9v5yi5n/w7TfvZ/jQT0c0\nJj/Uyw2wbdOvJR56GuW7/k8qstxWTIq8qmO7cwo1W4xH+hap5lBBdqIIWqQw\nTydPCXOvgUfOaOasZFJORUNrBzmXsEYZ/ICJAxALxxbFvRhEsL9xKSgZIPlJ\nDK3WRCVAyEkxu64GQBGsdUuFjq9rMaOxcnRsZji1bbfdPys8IcI9jE3BbyzE\nnjoxkVrGb1wzBJ4/b+5+Wq1+BaARt9UuCofAuGbxFtBxUEs5ZHeftRkb5c3l\nk1AB03fhG0GIf+snVh6Ngz22Yp/W1eont/uXL6bb2y/D2lxc5OxBRSSHkYol\nHEDjs7mv5uNSIW5v5hf7reVKd3jezT/zOnnJd2Ee1GNj0UxWky8GvE3b2WKI\n5IY0A1hZGcMZv1eOgdNpGOTuowa6hG9MqlTb9XomzToRNvIj3m1hdJgA0Quw\nnK8L\r\n=Negq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEI3GCbJFVhku57dq2SOuB5d3+IRJLAsX00yxOjqUyOqAiA/j8d1O67x8lHn5J3h5Gr7v88Uf1UqZjgD2JV9MmLbBA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.55_1594261224411_0.8194708222185283"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.55\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.56":{"name":"@leanup/cli","version":"1.1.0-rc.56","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.56","@leanup/cli-core-test":"^1.1.0-rc.56","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.56","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-bugPUBnVnPdxDYizXdV6fsnqXBoa2J80YXEQq8n1078cXbw99lzYtpSCGPeiJBxt9H2OnkIb9URlFsy86ytUXg==","shasum":"473e6b5af343c80c66b3451a196c2f3ab58cf91c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.56.tgz","fileCount":12,"unpackedSize":52219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB9hVCRA9TVsSAnZWagAAcy4P/10G/pRNlfaRBmZsIfOR\nyR/so3PxPLUDEgu8nlBOvfjEsvILN3LnMczjWX7PKtE+cKm+ydg7AhTBVPkk\nuJEoOms8gzv3kVa8xX9eH/8B8Z3Mwx/ta/y2MueiA8nqcaWswHlrA5A2nZb7\nxI3UR4iZvwjV7EDejk9+bkT+T5ITRdhFN1JK10qAJ4t5BwZ9WyzLNMxR+I2f\nawNdfJ6F/z3oWhQZLgDDTJ+XZF77X+1MGlet1bQ1HZDRvlMu3pPVL36y4vS2\n8a35lHjJZJaCG/TtfFI/x/U474wwirr3MVwtPSvSffZKCBYy+BBBtN7JnQDH\nw8M7+VOpIT2QlnjuTo8XFTiXHecmIGYtFltXaoshU2BE5d5aU6s1uWAfd0BG\ni6Z9tiVkmakzvQNsxD161/IfPS3N1YIMKSrju9S3k5o5OdapQ5mvxpRVWKBj\nzck12kHyii4iSqYhjB5ge9dN3IANATvAdlGjCB23moaRPrCjlV4bI1roU7tt\n/+vBZXrpjBp41bMfKfhTSRW80g6pezqQVtgvJEvHAO41J1DALltDn5S4U9vU\nAERgHs4M+4U8DjQrk51L3UE4xBu4WEIjDmBpHlYJCqc/c+shKuEBY6n5arZN\nPTJ4p45SHDhk9ybGrzQymCN8B0MFz/2haY2S66yOY5xXlPe0G5NLdUOOzzED\nr432\r\n=kMD4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIASxmhVOvKFIYpjqglR9cRoxaAEjc4kuAfDou1i6PvNlAiAUBCL0JY+p2xLtADo11kYL99ndXiUGh12CaJOxmNosnA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.56_1594349653353_0.4235401190278063"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.56\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.57":{"name":"@leanup/cli","version":"1.1.0-rc.57","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.57","@leanup/cli-core-test":"^1.1.0-rc.57","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.57","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-yFI1bdWrYf+uCnJdNKFWIYJmkZ73hNoUpACen6mnBPFHUNzCcNtN/SUOo55r0X/+zTpM4Lc9ihUuVOgoGr8xUw==","shasum":"101a7733425523434ca76d1e15d38ab73f0c78a2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.57.tgz","fileCount":12,"unpackedSize":53790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB+wjCRA9TVsSAnZWagAAv0wP/3xqxUmDPRMRtVXazABe\ngDnttDG70zPi2BhiSO64Gz6CBpaGqhvXvNR8kOQbjxzBUEhDoPVyNie+oqUp\nsK8d6qo0KzabTYpY4qtkFptIe1CQ3+n8pVNUDmUu3WmTUchaCNQou+GZKsvP\n4SKpvMW9VVETNEV/moXakYRYoNkNr8u/85juuYE8L5Dnalnqz6fE6poA5Afp\nUd9cik4LHWMspee3UlyNKKejQcOE0Vtykdi3CJjjFez2AmTSIm2b6m8yCoOU\nZbZdDyuoe6QEvL2O/pGeDy467K4Kpl00cVysFhGIP5YpkCXJQOo7cbVvU4Oh\naFgNoE/ThEs7PhfDAJ+ZOMiPl3dBZGyoN+WyavcZCOcsS16SO0voGZ7+kL0W\nP1FJ78t/OcDzBB8v4RWTRuBdb4V8IalLGpwLzKC/nbTdNtuYEpgX3og8raEf\nljk9sBApwXHwIwAfrdrbDCWeH2VrYtgah8mZOjN1IJOK5rvhupINCxmfjXYW\nwSXr1qIbZO5Hj9n/mwg+1yAbKzlc3eIYs4HCnPhmPFjYcMTcnV7dsb8C2S0L\nXUk2iY6Cz61TOaCJ8Y4A9K5piRekP+wFMVfI85U+8i7uWN88nr9GqsouVZQJ\nievFwfEVOPnQSTywfDy1IT8iyJ13wX4sP+rCsgi19L9pDlK69/Gggao2PYfr\nOc17\r\n=seYx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeCCoEbGBzpoIR8QPaFnuVQz66ZGdQ4Syg628/VIz9sAIhALOVVM+f8/OFQxBQBdAB5zVXkPQpy1pmRXp8GEojvN6o"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.57_1594354723179_0.4577965549450622"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.57\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.58":{"name":"@leanup/cli","version":"1.1.0-rc.58","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.58","@leanup/cli-core-test":"^1.1.0-rc.58","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.58","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-mIiclc8p2tdmrvGzULojC6bt+tCYAWTX1WJRNIS5yBt+heMXa0oZtyylRgmC1poUobVuNrqRMVRvpMJEOHMAqA==","shasum":"3d8510afbdf992012c3fb3dde7ff97d5a2726ec7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.58.tgz","fileCount":12,"unpackedSize":53962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB+0gCRA9TVsSAnZWagAAT48P/1V3Q8J8Zcg+5GZb4PN4\nUiaSC7Pb96/kfGkCxaVTDNVrsLczMMdKOgVlFq2X9G427MI0ty+H8JOX0sGL\nRDZzYSMojvSOk+iy/XB/alK3l+PvfkMd/xoONvoL0RabkOTldFOZrlEKmHja\ncIN9ChWgDAoaLmn42msL42YyKszyTenchcwTr0g/wDuTjGa87osHfArxOsL3\nYxD5tqQzxYPhjwn/lWLhohHS1szcUELz7V1zKaY7JASSfT2qImySzmEky33F\naHAGM7jENbRc+Yz0MBs7AQ80VQpH7ZR8ZConmPr5BmtC3iLYafV1Gf0itKsb\nMEFS75YDAUef2KQLum+OOk/2INa6msyU1Y6ZS95J/RN7jtj4fbBmqJ5BZaIM\n2ijeqeeFqKA7N6Oa23UoCxgPqJ8opGwW2jBQadhrtwzjaJAYn9x1QoFmL+gN\nkfkZaGeVPupSsZqzBYLWVe6922kn0G2j7urObpIBqRlOD+sVM1hNqrhk+m6P\nKvdvv9ar8E551zS+m31xcpXSWXjTcZ0hLbqKnYp2rwdDy76BnKsJPSEEhJhl\nUt4zzkIc+yuuxf/J1Vy+Q3zeePazuLSiPzXM8kZW25HyRJhIf4FabpUvDSSy\nZh7zK8qGU22tkaBiEuh9y8GGO80U7uz6RXHQ4PILHHCvxypDzEUzDGOhTal3\negwg\r\n=G2xx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDWoLz+HGp55MbVdsiqaFN2vOVc1cpcc6vCUI46MBWvAAiEA8gVFpvP4ugpSDb0dResqYbC8zVc5GArB/xDZO8byWbM="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.58_1594354976362_0.6702902529798969"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.58\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.59":{"name":"@leanup/cli","version":"1.1.0-rc.59","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.59","@leanup/cli-core-test":"^1.1.0-rc.59","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.59","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-xL3L6blPpGngJWCTmYLrxFrynaos/PsNQAJkx6+U205EhE4UU8nMmAN9lUJ5qhjNHf2xEMfL6uNxhvNzh+cl9w==","shasum":"26d734aaa8189a3b42252a6d39a0a7116480115e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.59.tgz","fileCount":59,"unpackedSize":367682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB+8CCRA9TVsSAnZWagAA5rUQAKO6RW079tQkXHFsSlFn\nf8vl4TFzKaz40T9r6VcIlXgbyYl/wNwuvvL0GzBOhcZigHxEQTMmlWUSafFz\nn8McF3pVu1nHHfavNInojqADsSpoWtFMKZHrIGKte03ulcrw0QzHfmBTr2an\n0DZvzVTFq+crDMw8oL0Tr/mCZurKQ75Zi7jST0ngRMcfSnnN7ySOaxW/jY5c\nIS0bF56s3X7/xL8WjYIFx1gQt7p6gryPGiWcaqhOipKUOHZJAxG2rtsKNuv3\njnmit1EY4j3To4wVC+WHSsJzu3L30Hx51pMO053L4JSVJZjjrx6i7RgQnN9V\nEr03A749dm7xiVW2vFe87RBw0Ze0/VbadeEM2ytElS/UR26USHyUxhnuQBD+\nHpDssKpw08e6OZo1NxtjxgSyJft5JVmDsGqz21FfIKq96pF63kKtUdaYQnso\nTO/thz4M8ZBPwcQbtzlGNyE8EoVQmehzwwTwIHOE6LAOlWwNM1lOeo7p7EyW\nE00rwvx2IYONOZe2kXiLQ5wHpwCK3eoQTcjUJhd9rts66HovHhspIldXjgUy\nkXDjeLUpKBa67AZmZYRGk+gmrzCrXmG/bzljKdriLtsdnql/7ak6i1VkZHen\nRUUmwnI906M/nYSfpRwJ7rDHnTFNJu6eECdSQHXN34f8beGAj2HL/lZkV1mG\npQlt\r\n=92VJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgRJzkBXydRn/1HsFVs7i4RdzTkSv7n6guljZQp3QtcAIgfBiuz/5wQa1SqynnouaUz/n/gxDVjxWwZddN/6CUc50="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.59_1594355457628_0.4759601059433536"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.59\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.60":{"name":"@leanup/cli","version":"1.1.0-rc.60","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.60","@leanup/cli-core-test":"^1.1.0-rc.60","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.60","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-+/dwp0AtDV08y3B4ECxr24ykSrHTOztTRtjkQUS7ARha0ai70Y9Vngrlqq0Q1V798mtG0yJ/ULnL0j/au1IA/g==","shasum":"77d4f69ebf97bb963b5cd9378aa504919fd39e00","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.60.tgz","fileCount":59,"unpackedSize":367729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCADoCRA9TVsSAnZWagAA++0QAKOUzr7QBpmrXZs1EjYz\niy9J6adkHq+WcOWXKUE3+J9jESv5ZbU2MUHsEZouNLzhtB53YrnA4cfSgIOb\nh7qbkwPpTnipMF4BKLq4GFP2PBJrDaCHX+93z9B0IiOaKBk9h1Lu7PI87hJR\nj8/fZuN8chp+eD9qBkVcviAF7TcGsjI1pV34IoKMRqmxi+V30O6bFzv9McKS\nqpP9XFub2ntFG+Gs1dNoFKB/WO93Gtr1WTqmc/c0carLo7enU1IRSxdvZwOv\nVs8cQhkoeFuhX0OO1LW4WXbloKTyC56HhNabBBFmgYvcrkHLAahbIKdI690q\nnBOlSLOI7OKo/H4azs++08KSJLchR5yX93tRpkSMNmUu/tmINK/sXYtMbpn+\nwQkFR3ZGuYEZ4B5+RpMi03E2dRqYTEczzK0NhRh3mQHhBqgayBy7rRrbyfdj\nLinGxeC55QQiY147fh+EOEm9eFxTitaAfI6PPch9cB3pNBIheyWCou4e5OKw\nqliGE4ZlhjiYp5mI7aLYMaBObEG6i53LyhHT2vcdR6PbEBnxFea8l7lJrSuw\n0PNYbtAaH85IX3CZwSRilX/zqlL0VDJp2sXPZE6Pe+V39pLbDmF/zXX1XXc0\nWvVqW4QnMcN0A321qtcYrZss+eEqAJKXqXrPA1VJbYngIBsqv++0osiqXIpo\nVm2X\r\n=fx0K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB5CTAB4oSzedsV/99Vzvkl6VMp8QgK38rpeHnaPS04BAiEA570O2uDZdqGMz7DamFmsLT+lezrF2Z4hGsYml+D2Q2w="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.60_1594360039918_0.663999758347309"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.60\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.61":{"name":"@leanup/cli","version":"1.1.0-rc.61","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.61","@leanup/cli-core-test":"^1.1.0-rc.61","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.61","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-MuR7t3ixBJ1iMG7JvNnj3AsqoBa6d+0AVuA3gG7O71J6J9yVvxTJDVuKDZd7mQq8Hhh4fRxgRaU1pupf9NtQcQ==","shasum":"d0705e08660e855d8c9ce55dfb9de7532d101136","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.61.tgz","fileCount":59,"unpackedSize":367762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCBv3CRA9TVsSAnZWagAAjloP/3CoSzAbGR6qeQM7k1ZG\nBmot/zK+eGC0Y3HCCtt6XCXpHrYUijTDIm6clqKT1SbqHpH38CMhWBF0pTvF\nvadfKDr+iEo2btsvb99xyqOVCNtq+2QqlUpqphyOsnTsAiX/6xLb8dSGhoEu\nYN7x6yPom9HCkU6w5DjgRttSIDBNzKnijaHJ6Lxo4X09Y7oA0gWxbInH9imV\nI7r5xJYJOuP1n+lcx0uuEB96Lho7sXV6xJ0yQ2Ny4aIaE3NZpczUp7JiLwAw\nJrH1QnFkAIpCsizBv49CMg/77rerZFY2mkeUZtII93z9x3oQo4yChiH08VJD\nWAEcyb+PGNriWNgb/BVU9Hk/oF5mEUTLDpYoMgSHFlq4bgRJiOdLylnF0/e4\nO6AFK+t68lXZSkGV7IUVfnVHTfY9GqhQyC9+mIRhnqaQ8mok9CleTw77o0v7\naMboPZQSxrL0ylLq32LBfham0UsFnocKnbxWJKTg2jJzhdwp4sAfbQMDb7iz\nie4YZoPK/TM1ONFSEdORuTL8rdtjupE+qlVkRm0MhLKWH+rk1JeXukbxQunD\nUyWBnTm+oFh9af9qveuaQpe37FVocNPZvX8TLArTmBSKgMRYRRESpR619rTo\nhLyD5iWHFi+nCawq90aKPX4RcAdnmfqZKIcDzTaHXUA+RhBo9T8JnRSefmBZ\nbl1l\r\n=V6G1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICDkmtexHSCNCB8qUaxKcM1K62dQd+ng4TvH+1FTGOM8AiBwwNEGDoNbv767IHyLyoFhfnqLPmQV5jRXaLaPAzwtew=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.61_1594366966487_0.6082973040696171"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.61\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.62":{"name":"@leanup/cli","version":"1.1.0-rc.62","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.62","@leanup/cli-core-test":"^1.1.0-rc.62","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.62","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-qoeGlljFEO5kzIT0/xdkwxEdRkPPZeAroJFzNBMLnMHhbc5IFF+7pOtZgG66zsHsNmeGKBIG4Kpq2GRPS8FuFg==","shasum":"2145abd44e6261e4516a11f3d425fb753dcd4b31","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.62.tgz","fileCount":59,"unpackedSize":368564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCDOACRA9TVsSAnZWagAAyEEP+wYhlmlsZr0yi55G7Mno\nvR7HV4LH/JPOfaLaXT82hnAZiF+EU4qO5PkhKrUBlb2utvD8FeTGsDWE3Fts\nJpdbWvrAkjWHPekJ83lIxQXkY6DMgyRzFlDNTVgfFi6a6BH3xYfrsyCIy7Ee\nMZDvH3NNylpVR/orqNcXeYT+eESondXQVY9JCHD/tpMkcr8EYAzhovV4eHT1\nzFGLY4JHBRdvjoJM3/MC1+Qd/iYXF1POQeZ3EFNqg297dgBL8Hox+HPGxOnn\n4QR9en1Nfp77he5vDIZv6kMkH9YbMqcvQLAIapENWmn2WQg6oh/P12USw0BH\nddzD5t+i+C9E3VmogyJ9gsIrFR8IHKF+6x3xbcrNljUrXu2vEGRGm56dzroJ\nOwvU3aGj5JSFXqoA6xELxaB00mwYYjHERM8+hWe8CG3Gydz4JcM6niwK8ZiZ\ntNZ3RHIAd/JFK2RpZNKkQMQPdybvCeTkXH+bL+vzKt3TnudVcB3C1/QdKdUu\n1Vjjc81A1dmeZWMaWMA3TquMk+sh22weMZOVXJjQ3qJ5jl60rX7TyILIKLcB\noC6UoX4LvkHZNUb7mAAk88lr0YVZJA68063+VyR7lwDUHgJetD4HWqHprENl\n1i6konddphhbpTSAXEPrBGGOtyorlteVMcbu84rg08twqL4Tw+hv/ID1OYVy\nOZWM\r\n=FJMi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqA5Vmpw+RbUG+9u6b6kJTK/Dbw5NWKiPSKX9qBtXd2gIhAO1iJyklLD2uiGBX+0l0jZ7WezwMShhTyfrQzoTFXEtG"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.62_1594372991748_0.16227358175913342"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.62\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.63":{"name":"@leanup/cli","version":"1.1.0-rc.63","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.62","@leanup/cli-core-test":"^1.1.0-rc.62","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.63","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-1/YKSxaR+3o2jngakQwCb5wRayFCAmTwuqMOC3qnZiIpzF3K+jJ3Xou62P6/J5sSHo4Rbvom+najUqY0zqh1Mg==","shasum":"5f131cdc5905ed82d2b18741fe9aef78e5d89822","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.63.tgz","fileCount":59,"unpackedSize":368564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCDqvCRA9TVsSAnZWagAA5YsP/icgQoo6WSWk9IW9g2a8\nKOfXvZaMCmhvUOwUhz/dv+2HPAxzwWpuQqYarSksMuha+O0rSUiRJvbM2vDF\nd9LOpbHanBuvOt8PmhJLZWZck5Y55so2RRbanClz8j99PVnPY53ScqY4BuTY\n2VGFMXsPLs7i5OoCeUL2Lv3/gYueJy16WueiJe4OFqEuUYwKoe5/kuLYOD7f\nYz+SBOtRUX+7GHJEKoPG/fCWEHX/RgGZ1iZ1ltiz9FNbKkilc6LoVSbGSBrG\neOQTRDwQRF6zS8g+18gw/AThbSO9YT3uF+HxmEYJtOL6vo//fX+77DKlO8Nh\ndDuyTTne0ZVgU2C6vnGP9SF7G2t1ClzvNXeCen6uIi/QS4bICOfaMXZ29U7C\nLrh2zSv32K6Yz5An1bygj1HMhu4FA0s65b9u385X5EmY5esY2+QDghswn0Kz\nonmFQBALuTISQvhnFMBesKCYQ5BsWj9CiwRMQCMPpEMJM1aKxEvdcEBGjRkM\nZAjzx/QGHBs+UnwBVkgNW8eEvkMQ/z352wiyHYZZ0U9VcK8CdZaITYXfcyKp\nTnk5G/wTfow/xlRAnZiFubDhNLoxRkrpJLtxe0TfvQqWqqsbb/tAQmjawvrX\ncDy+NgZhoDcxru+dxcONGp1rLEpnrlSx5NRF+ouBImu7irYLmvf/S+b9OqGk\nENR6\r\n=vSgG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB8/Kco/T/H4MHokqeW6m1zXEWVjv/1IqRaEKA3soj+DAiEAmPZJwav7pw0WUvXacQy/JgLMGuu5CDrcu+oIQmGslDw="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.63_1594374830277_0.12811231765097286"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.63\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.64":{"name":"@leanup/cli","version":"1.1.0-rc.64","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.40","@leanup/cli-core-format":"^1.1.0-rc.33","@leanup/cli-core-lint":"^1.1.0-rc.62","@leanup/cli-core-test":"^1.1.0-rc.62","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.64","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Lt0AgJWNUj2jOiDLB+tukii5IB9iHONiCx+TJfp/N1nRBM/pzc1C9d8MV5nUhuZsSQWYdIkYCtEX3cEQkz+gSA==","shasum":"81b28784395560b47e6498614b0f26fa969d0d85","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.64.tgz","fileCount":59,"unpackedSize":368294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCE5qCRA9TVsSAnZWagAAK8gP/0aA8X4PIlyvieJ6Djfw\nUbMjCwPVGCZU7mLo2Jvo0b2YtQ3/n1k7Hz+l4BfvLrNoTrNZJextpcsbURn6\ne4ew3K6yDxuTynJ3eIISymSEXqWVw+Qsvpef2XvjV7Bsp65lBVi3qANG3pmk\nzOzZPBGr9FsyHrc9gu/KvBib15/IL0u1Dx1auh2yulCiimUpwWsD2qZd/gnw\nGT36/DrTHHzCcb5TVNVCceX9z+hWLeQIMKdjO++v9TbdcWgvelnKBVoSXN0R\nTZ/fBv2KY4zDAB38oq3vK9A6eKu38KCr/aGF6pOcPlqxLcA7fp46NIX0FmSJ\nyWjdhLZynuCnoBXLxeNOBVsD0Kr0GoyW2F4faTHCP1slEa0r1jlX8Lii0/Pw\nUxHxW4JBNtHJkrJbVGVidqO5TFmqqfbdOE1XvIFSUNDi6c4lGf1BQuGyG8qL\npuA0+84yU9oy8i4kGhe74WuhjFaehmx95iAlsFCnIJnZIJDTACsVNqEClbM4\nXF34sp1kdfuR4p2UIKTWm+5pHeaJdVfZHxfk3kyORlPnaic/EvX40vwgF8nb\n9ekxZmcb+/22uyTR2ZKnXHsl3ffxliw5oZBIzKjNe7HkYhc2Gu7Vj5Dr6dEU\nnAMgK8Kz8co0ukft4Ico2XE4/jrfs+uulFzDZTrr+kmDxJdiCliAqQGuJ5k8\nmGxN\r\n=CxRK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzyGdVychqFmXieyGphcDL2sEZpF89BbTlrq9MTY7MewIgGQE8ln5vDR7QYmAhk0vbuqQnKHymWlHumq7uy2JOvF4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.64_1594379881932_0.6905477393616348"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.64\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.65":{"name":"@leanup/cli","version":"1.1.0-rc.65","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.65","@leanup/cli-core-format":"^1.1.0-rc.65","@leanup/cli-core-lint":"^1.1.0-rc.65","@leanup/cli-core-test":"^1.1.0-rc.65","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.65","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-YCfaBHbKSG4qDivcoC/GkQj8oAYtcCHbpgk+qEkhciy1h7rBLKUchouJBhryuo9nsHgRYsCF9ulzgNWhO1wJ8Q==","shasum":"0ce3498e8c99a3fe80d9c6235c7e50a2a99f3d8d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.65.tgz","fileCount":52,"unpackedSize":367875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCFLOCRA9TVsSAnZWagAAMTAP/i/ePr35UFlZRU0y166V\nIYAA0NoLrsj7k+oin3LyN/DJSG82kpwHBqlGgXnpwh7lQxgGACYSwrWM0bmE\nN3snaLRLhzoF3xJHsLpIi9hNQACP2jfJUO5H9zArIqAaMd+l4sx0SsUYoC7h\nfzka+BU1douxVAbPBWUagxHOlsBEuazYTKbbRILNBlK9N6uLPgoWXjiCAhWt\ne2wkjlz16UxwoJ8tIklo+tknWWKonYa0XSvdYEE3FVKSPe+srg7n1Yg349NY\nPEm4//2Vb/MHD/a76vQrtOmf7t0fAj1JmasxH22PZkKozvC9nPI8BRAKM05T\nI3ru6oDQQ0WNjJpgn9F6FVCDUILd7wbbvm+s2P77LLtzkSU13MxF/g2+MfOl\nN9R/UHmF1I4OXmWaMCfAiLthj5vkOV8KG5EBNfjkj+2sHm7AB4lzENU1WYT9\nxSmhIs8s+3G2Ko3epMtAdmkqHM3ZCH+ds13nznC0MMHv2cYQIWXLJ383q6y7\n77GHy9D04/C7aTT4sHaLUta0qdIa7e1+NObPxOTHRja9HozWI8XEU3zF007y\nFUH7fNN0sITW/GtF1JVPSpUEd9+71pJ/9wxUpwTlA8lS6IJyYpecyfpyHMmA\nPWU6sr7Csf0qHa8iPrk1Oj039UfxoaFwcAGH5b059Shm/l7gnlcsDE0J8dzc\nr9TD\r\n=ogeZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH4CwVqU9QaKfQAeO9P5lynohsnXrAcgu0eIYPasCOPrAiB7NI3D615IpvtWn0p+otsp8+/T1fV4chsyCInoXHNOBQ=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.65_1594381006177_0.005396477857354309"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.65\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.66":{"name":"@leanup/cli","version":"1.1.0-rc.66","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.66","@leanup/cli-core-format":"^1.1.0-rc.66","@leanup/cli-core-lint":"^1.1.0-rc.66","@leanup/cli-core-test":"^1.1.0-rc.66","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.66","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-9dXlQW8T0vJu4HF3OZMn2odgtwTuzKOgikgu5DQfvkNI+D9IbVXC/w4hCWhZ/hy6wfuxahD+nj+EleA+krvbGQ==","shasum":"7e7fad184ad0c9f1ac2d095e1ced6731ca961e12","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.66.tgz","fileCount":52,"unpackedSize":367875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCGFBCRA9TVsSAnZWagAA304P/2xna6xLNIEbFHTdERvK\nbBqDRM+RDsq+XebQYJqipCETmFeeoMzQ/Mf8WcfATBKh4ByNiAktnU1kxQsE\nk0NpSNrKK1HNPoE8oc/WkuodTslqfhzNcWMs32sKIW0IJVIPy97GtBZ2PQ+z\nKNczY/R+AJt5/+596xU5ESNlibZwT5CVjhVRHAw4333B+zP8/Kod0Kvgfb0e\nsRai1uwRtx6pdRNx2RcOK4+EIj4Ex8ph1p/5pkGDuxZVfFpwGIgkMVqIC4i/\na8BqgSJ28SuJ4bhYCYcIiXD3ur4mjRAX/Yy3QcCUpukWQnowuozf6dNquysH\nQaBXpKFYmQ9tIXzOWf5ujF3nb3u/2OJogsp7TyjiK4xgj+ri05fDlqzNKJEq\nS2G46JSLyRZPHgj8vkgPtnH/sGyldkTRRYmCQE1tshqmzhyjsG3lml6vHKGZ\n4ROmlxf6nyCGb0vjHZyEfkKcwaA3Gz605t3Octe72p/6yJumXmg0CWWnD5sK\nvWfI7NI/PulhgIv8ScTk+vLD3Bzq4/JHB7wNlp+Ir7N0thD20vP5DHN0blzA\nKkADODiyUp3UsqYx75v3XJ1+eTeaFru3sstGWTYsLJ2tairUUTi7w3DxmYhg\nTTbtghYOUIqcTWQzeM5YrEJzt0ECK51slKyWLKQdp0csuE8fKE32P0Cdc2GC\nFtUT\r\n=RjeE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDq7NiIp9nnYrxLNChdVVV21YxKOV9/uwTcgyVnhICamgIgRD5T8tuBcucZcIr0qEZIxZucthtTcuZqVOTo75I3O0s="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.66_1594384704998_0.13346585078245665"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.66\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.67":{"name":"@leanup/cli","version":"1.1.0-rc.67","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.67","@leanup/cli-core-format":"^1.1.0-rc.67","@leanup/cli-core-lint":"^1.1.0-rc.67","@leanup/cli-core-test":"^1.1.0-rc.67","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.67","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-KpmuE41klL3L3B+4A7UkDtoYneQbnov2HKt3TIhmiwdYNo4FORnkI3d7iRZjv4DSD+EqJ2mmZoBhf6sQe8AFvA==","shasum":"c83b8f6a8e4b89c0197ff0d853fc9bf545b06438","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.67.tgz","fileCount":52,"unpackedSize":367875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCHEUCRA9TVsSAnZWagAAzyMP/0WzufQq+aiHrNhY3OUS\nXwezeFDQbe8bWTpEKwGBcthqU/SpDWv6HH8Kx5yrkGzv8OHYRsuIADIQnWGZ\nyTy/XWHCuZduBCcOAPnAE+r40KOWatBI5OXLPvVo3nBgm3MQhysJBVxAAbxq\nc3pWWs5LCc6fp7iK36kRP+4t3+h2e6A3a4lHpvwuViyb/mMXt8knSMLX1zzh\nrAOOFFkCWqJuZEE2SSs+P38rKUwqAdfA/0WajPIc89u59x8XVwo4SsrdrIoZ\nujnYIuWRRmP4mGq3sQo9Mu7/ewX0VEoS8EakzdDK3SJ+zPEWlIxCS/Z7DA5a\nPYd480GHnVxVn5qZ6YKJthlEyXAgx1qKm2QdGoQmvwVazye8THZRBxF8a/Vo\nZG9//cazAFfR4WJrlBCOL4CqJ+xDilQ8sSUdv2g5L23tqFOuqbN5cIrQECMq\npomiURveboBBtubaZgrS//4hbOJnskm/HU/TXO9fNRSAKGUi7NDl6qAMjaOE\nXHq68Y+HP6mjaLCIZZZk9GnI3X5P8MivWJ7jQ+7ncNUXUCDhj63zNLrZaSZX\ny97hMJgDJ+FR9mjxnx94oq8gmXeyudr1S5QCiBbSkHFf5/aIZExKEKljy1gq\n9/VkcqHRxMI4LiMhdu0V2pp+wlQ+KGrADe3qkYB6XmKv38+xnArJwHJUjj9G\nsRBb\r\n=2nDx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICcgFXminbQ8EItibwgd0AGfGuukapvHL0FR+pUUae3tAiEAsMJhso+TiegCfyAH6qCDFgMErQvECebK9PCCzS4Lksc="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.67_1594388756227_0.9619418532814616"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.67\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.68":{"name":"@leanup/cli","version":"1.1.0-rc.68","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.67","@leanup/cli-core-format":"^1.1.0-rc.68","@leanup/cli-core-lint":"^1.1.0-rc.67","@leanup/cli-core-test":"^1.1.0-rc.67","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.68","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-TWylowDZzDToUm0a9fSbzSeDI7fuuPkh5CE/nBvx29Y9+8wCj/Y+5TSg1Be1k1UuIhWk0khIHnkO939ObvDXfw==","shasum":"166a227ef7b01b9ea0717469a6ed305ace52d2c5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.68.tgz","fileCount":45,"unpackedSize":367438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCIlHCRA9TVsSAnZWagAA9tUP/RzWkRSrDCjyey0Xn8Xh\nZc25Y7/Fdv2Vm9kY4JuNcOyhDorL02NRWYnT1I8xvyyByjfqu3uSwu150h2X\najlFIzvHNLUiSH+dnz+8r2zKAZj84YT482jhKzglZ49ZyLF3vkbxy9T/v+g8\n9617kCuCDwXef3pgGbTy1J6cypHUp021gh8vpfJcZc+HU/Kkn1ZFhcXf4df5\nOWEDcqRP5kZ5BM6TrHONej7OFgm7iLv9tCy3obKFqXWVdxrhJETXzAug90gy\nHCfv+wXqFyhgm6TYVdh90BELAlev824qvfIJ2G+fgk5a6BfLaWhS4nrGhKme\nYn9K7HzofbFgtdjY5S7K4nmGJV6yzHF2dX0wKRMFiz+R6Y8oajO0mKV5rMQ7\nrOC94C6hb9yeFmGtO/eFghnEqR0LI/k+nV44xrNQoVZRJAZzExBEqFO6+QFJ\n0cloz6w6+SbXVNXljs8A2Oxp1VyI3rhGvc1bY6zqjDvOVABglSGlJKUjB1Kr\n2S9cH8nWWc6Er3KWQg/rtkQqx0nA7BXrU8Et1L8kNELpelWPNxN1DqXofrx9\nT9Dqhnbwkqwa0gYDN9SIsgWSf6s+xQOymF6DaI5fiW0XMqAmwClupULzf7tg\nRqppaDXrPsBAS4RoUprRffAYmTKXM0dTiTRaRS0OmzKwXpKNd4I0iTQvQhCp\nW1e8\r\n=Cef7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICmLnJ/raRo2CAvpzPYBhDci658Tkr1d1bVJXuQIEEccAiATUBeDomSCLBAemWkQQwaPM8JKxRsSPwIf9SrGNEZw8w=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.68_1594394951082_0.8843494244009511"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.68\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.69":{"name":"@leanup/cli","version":"1.1.0-rc.69","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.67","@leanup/cli-core-format":"^1.1.0-rc.69","@leanup/cli-core-lint":"^1.1.0-rc.67","@leanup/cli-core-test":"^1.1.0-rc.67","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.69","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-421Zg+OmHSGEOxb/qr+KD89Y4+U5l5FUq1Uc3pzadmTSCDzAoulxMZc1t9hYQ0lv/3mIU670EZPktcqDMLHjeg==","shasum":"d30366a21a2f805cf10929a3a19cdf6c2a02a4d1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.69.tgz","fileCount":45,"unpackedSize":366895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCTviCRA9TVsSAnZWagAAT+4P/jpBHK9f6hRzsCsHU9My\nuCAQIYlg1LP4qsQwsd+SsvzRVvUhCp1d8yFwpK+V71LlcKa9dk5plKWtGioy\nf24MiB1W8DH/yoUAwyZ4SLIoSmHspWNidEGh/+qb0hXEElU2nMqz/VmjF+HF\nwdiy/UdPBQWcprHU1iLV9jTTufsXOVZYe1JcV9ajiSxDTTOYtb8m5qMqIA/g\nCH9IqzJkxttF4/+0PNj+yW2fo7oWnckGMHOd7snHC+bUrszN/kjxKfTKx0Do\nJDLWJgPWOOQAmGkFioikVAVSUAyzpCbeIOrdzxqs8Bhg26O0i/+G3oZD7lYG\nQvbtIKGT4gPCOXpYPJX9o7L+JWqYdR+GZfCeRdC44Usrl8y8t17I4mrAG1Zy\nQKRXSaMb0luaECVqMpkyxaC0KzAxxYrlyzr20nedgo6Q/DMRYibHXGHeJFDc\nQIyI2pLlYB4+y0AoKAWWp+CdDnIj3JLElW/luzHorSSO5FRgI5U35zH8bPaS\nQQw0nfQre90wB35AbCHC5jwFYb//S7hz1TqLVVuSFUXz0y8I/hcN5moiMZ8J\nPDMqSfS+vWT5UDbj/qV+PIdtWN+xlx7o4KeZSVMPX1at1zgL05g3VwLdLODU\n6IiSAZsSU+b0eXsyqf2z0It6o6wrdWKPoNC0yNQLl5503epn7U5iTGp8mZ+7\n6Oj6\r\n=2q0k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH0saV3D5SvSADc+mpuFmc0K9D/JM5q0Q8T53MKkw3duAiEAiG1woiWjZa60GEa478TuLKckYt9kwZuhO4M6obR3RTI="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.69_1594440673718_0.8213194301362234"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.69\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.70":{"name":"@leanup/cli","version":"1.1.0-rc.70","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.67","@leanup/cli-core-format":"^1.1.0-rc.70","@leanup/cli-core-lint":"^1.1.0-rc.67","@leanup/cli-core-test":"^1.1.0-rc.67","@types/node":"^14.0.20","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.70","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-LBQWxB9ZIPZKlE2Cme54kajMOG4M67/n6eXpnGquTFotZydUkAABW36Ekr1wOde/AQ6cmhi/A6RJt0nvFnUD9Q==","shasum":"a18a22d70a0eb3c1a84a6e7b50960eb24c36256e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.70.tgz","fileCount":45,"unpackedSize":366858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCUGiCRA9TVsSAnZWagAAVc4P/0WioMJ06GPo89wX13Sa\nT4+PIvdGG5za46swoOvJewX5euLBDHYxxlnvIjhwffqLHmOwIwZAXAt3Y3yA\nd6bIx/KujB60PAXEAsnzCvHjkF+WWPmoD6VrXKC88IthXGM4CREmXLV+xzCd\n/kEO1Kuw/2WoXfI9hEGoYpStE8K0rmlDXXe2t/mc0zPIvQGbYtPMtFDyf88n\nXrAE2JBJ6G/aH4e4WJvCO4UdF/6wXslEdwVFuZ4hbfqRV7YBFiaOKEvw7eud\nbUYN7l1F/s151sFgTeFF+NK3TxOhnijFwTGNeCVQHbKnrg5GblpQDGx8SC6A\n+Pob68UvOiLdn3BlLjC7NIR8lup788YShlzczH6vF+LApfCDjFtCuhm9GMEM\nioW7OsrCW7RlRfBlhHAzeG1XlcLjQ1PRKLalIMbBXspKawjuJEZLuXusFVm4\nFfUAxaaYmfDUEJXz5qLmfLK7JiU94x7vUSzA9hFM69Z5avk7KwqUUt82OYZX\nkcqPUEAnIUZ6smrFbKQ7BND2/6HfTR1jb2gSvzqKyZxHdXgKlr+skNcHEx/w\nDRaCrjCDA1KidF7q2tSBWNzKgC32wTn/4PhTIjB/o0cnnBMmdZ8s6AWyXpqt\n0pjef1wqKci6TPFAqVrGd4t3OE6HKer9f70wesqGSB+bjj5jbXnaM8DsXNYF\nisR8\r\n=ymdS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG83u5PRvquV7v8tYAvRLPr4jN/wHVfPCZM/jIefsZ0+AiEAqgAWwd9UhShSt3rWS1EwgESDMhs4/+GC8mAU4gaYKbs="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.70_1594442146297_0.9854019532915268"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.70\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.71":{"name":"@leanup/cli","version":"1.1.0-rc.71","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.67","@leanup/cli-core-format":"^1.1.0-rc.71","@leanup/cli-core-lint":"^1.1.0-rc.67","@leanup/cli-core-test":"^1.1.0-rc.67","@types/node":"^14.0.22","autoprefixer":"^9.8.4","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.71","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-cEfKkLOZEvtAoz7QJ1cB8h1AfUBYrCaISNgb5k/0SoxpOgJVVns7psmDAIpyjnfmgf6YSSVtnKnem1XKjljf8Q==","shasum":"7d74c69647ab23852edae7fe7bebddeafbc7e65c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.71.tgz","fileCount":45,"unpackedSize":366494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCUR4CRA9TVsSAnZWagAAASUP/3RqRB6Nq9rChQRaDVbS\nu5nRaO226EgUcGXcdn61mk6v3quVccaG0fKUf1PrUe0v6T6q0TmbkzHq3BA0\nrAwFEiz/Q2BuDYHZyPLJ2ZoSz0u5/YkjTR1mnIW4M7s/fG24Du6kIyFAsrvh\ny6DH+uZnriS8EBlcTAPklBnif9aIAF3MlCeX3cKGDPJZQVTvYwHcQ4eeePmJ\nhEeyui/C1kD2kO5Zi8vLyo+ipZgsLQlOZuUdMDiAoY1rzEYDo3kQ7gFU8dqp\nqk3NlD/Y8DZDgbUPlYXW1zrQz+S2fAMilu11SS3APcEBSQcGu6UCMk6wrRgF\nS6ZTw6kdIAmIPjwlAcyDvQ9VKXIdXzHf5OC6OLAgDbZp5Df9NgH2nxZLcEgo\no/pPlmNkmzeViIJnrO98l2FdE9IVu53e37Ucpj6pyIT/jIJzDn22V6nDl6Jt\ne+cgn7Syfd/T62LUFFcQx/D93zKni/WFEd6WXJ75EB0rzOdpoK0SAMzypT0S\nZDuqbRAtGhp5yFp/55N3x+30QxTOGshDa0v45HTlEjzS1l+Mi6vb//hqZPNd\noOFEoShp4Cmymfe9WrvJI4vbZTu2aD1qKcRAgZR9SQ4xIZmCs+XeG459/Aef\ncysYm15ZMy6klPxwG1XB7D2sn9Tojd2CV8kGeFu6CuxTh+q90+x6TvGIsyEH\n6TyI\r\n=DYMz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2K/+RvBnQA9Zotb05iwDMh4doEvn9lx/Lkt1vn7p4kwIgVYDys1u7JWRxq8TDA2L35xls35CwySMhzb6uuZntokI="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.71_1594442872085_0.6205551962519711"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.71\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.73":{"name":"@leanup/cli","version":"1.1.0-rc.73","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.67","@leanup/cli-core-format":"^1.1.0-rc.71","@leanup/cli-core-lint":"^1.1.0-rc.67","@leanup/cli-core-test":"^1.1.0-rc.73","@types/node":"^14.0.22","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.11.3","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.73","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-yg0BTq3OIX1fjMjdTp9TO6QrygF+HLu8EZemMhGAHzdRQU5Vy02jyqGaQUl0tBnJ6WORKRIiue7n+Jja0mAGbg==","shasum":"1ffb66f31d27424862c0122151d5d3289c948025","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.73.tgz","fileCount":45,"unpackedSize":367258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDMq6CRA9TVsSAnZWagAAYw0P/0kU5v/I8Thxnlobbfbe\nzl+doX7yjUbI6GCiCCjwbU9XYcCghDo78qPLMLrSfL8iUcGYT7lXK8IU8WGK\neGqB0W0ZbxA+XkYNFbCOtd0I0JjUkpJGYnbIm7gV69dLPWIlXDm/gOSVYjTj\nQZlRTvEmgygAQ8skklBfsYdvyBEgYXGH8JB8TaqRn/2Potxwkp3Hv1OUDK8/\nm3gWk7OqyNEWq6DsU/FakVyimJw9FN5UruxN2ri8RbHTdAnhiygAokVD8fXw\nYASfiO+p0x9faU/Uk83orE9/8QNKbtDkdxWaUIl1h8nxoVnkNJuJSSSyitPf\nSTcUGPcEveFqNVMn+OSUflRlw33Lzf6kSbJ8zNXU9Nsh7jdXCL0zMl0eIzcB\nqEYDOGxc8tZKIeVn1YF7grCeRdBZT6AjpIiFj8Vt2NLJbpxwPuyDl+7n3wIn\nsAF1K1Mpk1VX2hjlKy9KEFl24w3PCIAFXn6xdV4cwl4kdy4y1uyB1b+QnZ/m\nLBuHqJm4S1LF/P/OZnOYhPTxw5jsfqrt6NZZIqzS8bNUVOb7Sk7b5FeivlzP\nssnAizALpECp9L6RWjCm4aC8kQ3l+LcodG9g6neD2IvmRhacQ/MBQTVDjM0K\nZJzKYb6aX7aUyBiqS4eAPBuY/eV5GfcgwXAK4jcO0yMgsyGTvJiNM4rP/ePF\nafPp\r\n=03F4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0z8RwnhBU9RhqcWYb/FIr8LT7uQuv8iTBXbAUeY92mAIhAMVa1+SkhTIfhgQWNNbgczBztwTQAz6lHHXEuTS06CHC"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.73_1594673849853_0.13797526508696345"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.73\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.74":{"name":"@leanup/cli","version":"1.1.0-rc.74","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.67","@leanup/cli-core-format":"^1.1.0-rc.71","@leanup/cli-core-lint":"^1.1.0-rc.74","@leanup/cli-core-test":"^1.1.0-rc.74","@types/node":"^14.0.23","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.0","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.74","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-z7zYQXmvUPVhDos6edSwgFTUcNgeTjghzk+zak7AClZh94Y3QIl9w4w6dvMoMflUg0xqhRNSQelYqBCeW+vjVw==","shasum":"8f85be47bdfec3b0d1c7085932d683fefab17b94","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.74.tgz","fileCount":45,"unpackedSize":367258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDndzCRA9TVsSAnZWagAAwNYP/jHG7Eg4k7yImr5Jjx9v\n5q42XM9ujo5CU9HWqJmFzVUutUzpXcrdQt2XyxF9XBSYqStAZpbbsCKwhIlu\n/+oXgnDmd3GIGQq7O9memU9VErOssxeVRw6EjnQBvy4qXcIhAQjGsT8jWU4O\nlZsdZx+mT7s+WIfbQHwPl+3LqjdEt9q0Q3EAZooFOiRsCFRANCBa7EtGg+GJ\nG0z3+btcbuFW87oHE9YqnkdJAA9oju/Wir9VAZYPf6kcpiWu/soKDRV4HV7Z\ns3dugVxz6h0JilhQWNy5IyU9wXuf1GsP28FpeeInnNWMgkdUmnAv4AOa3/1d\n3ormCXm/0TaIXr8RFsOyAU/KWUrDyLesTHXUUP4AAWphJXJJZz3T4T1aI2NH\n3GU7PW83iEWQZ+iE4SedDaLsXLQ+hxSvN5mQCCUk2uX+R/HvywRLXLYsC7/d\nGN6zDLoZXvoNwVD+6gVcQjjqobrnjm5AtMzxjGfjglEWf5gnHwOhdi1HqJ8d\nqkgcqjM7iVhdyoWezMvy3Xl9uyzIinKGI+9qMuzuDKjM6eR34cqM57A+OqQK\n0QORF5U9AAjCDsbHxi3TLi0zqWCuGHQxEqymvyArgC9GjenKwR0wWS6wmMuJ\nOT72vWUw42+VJkda1LLTJpisXGawegj2qK0vHQRWKYMbmRWhPSUEpe6VGM5x\negyP\r\n=MntW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICoyzAJDgT9a38RfsgdtVLKvcqL+N4qkvuD9WH4TkTleAiBAFS/iahvziflPAhKkUpXacewo9kMYBRTzspSmuM4r0Q=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.74_1594783603092_0.537251032997232"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.74\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.75":{"name":"@leanup/cli","version":"1.1.0-rc.75","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.67","@leanup/cli-core-format":"^1.1.0-rc.71","@leanup/cli-core-lint":"^1.1.0-rc.74","@leanup/cli-core-test":"^1.1.0-rc.75","@types/node":"^14.0.23","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.75","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-VDFhxqPOJKrL/HMdv63vxBi1YfV09XC039wvwk5KBZQBlJ+gEBxEVDH9HB2I1E0zD4niwMh9EtcFluT0doAaIA==","shasum":"7cd51cb848461cbd7405125e4840cf672fa1f6b5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.75.tgz","fileCount":45,"unpackedSize":367257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfERjDCRA9TVsSAnZWagAAk5UQAIw6vgJKg6PRLP90VDK9\nVE7+OqoslAvlHoWMUW0b79ExS7Qu+FbtXunBEdK2pCxPiV0lLtClkRdcjfgJ\nOUHoPBBhAHHcI/AfTyYhtpzE0JoQPBXZ5kKBnzyJ5X7AgQupUtCJk7X96SgV\nRsOj2u89v8XP+/kDMrRcwvPm+CfpdsJ1/+XsNcrAYFHZD+XUIeFXGq6zX122\npWmQ2W5LmduIdNQbfg4nKn37gFmDGgCHA3mIDlQ1Ki4GW6+fZyTlgO1SspiR\ni53emA9oFksfXumPrnFZR7a35YF5r310EMkHCZBSJzZhs8uTPpda8XGiWW/o\nAXWQP2OZcPdK0sSKjtwwP3AZLW9kpHcQ+n7oypBWThh78SRMSxOjxJO/VKwA\naPNi7eHr6M6AI9RmMNKYSIvo1KnwC34x4j9wbGNEjORfd1SOzCIvh1EPNe97\n0leVWFohViKGNrexxcYmpG9ZAn195HynnIQ5s4EQhRjZAQXaSJQmgmtRW8aB\nW6k9O8MbShtfgEdvoqg/yGeNDYcvpG+t7Pl8ITGNZITlHox9lJVckpRmMO84\ngOBprUtmhlXZVDwlU3Z59JyiITHgW4yzSpFxaIoQj6LbVc/UTdme8lpEfNwt\nnI9On/6ZqbMaIBcs0bMW9Awl+oagOTFsnbeFOwjXvIXweZ1mUF/vbKBzyEg0\nd/Z7\r\n=b0Yb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWU8WU8XLNYgXreQ+Ips6p8kcwHemN8uWhaX4VnDY/pAIhAJNMEt+yQZYF2QipTTV15tmFUvu4k+06X9IU7beUGaQL"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.75_1594955971292_0.46390360866842895"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.75\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.76":{"name":"@leanup/cli","version":"1.1.0-rc.76","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.76","@leanup/cli-core-format":"^1.1.0-rc.76","@leanup/cli-core-lint":"^1.1.0-rc.76","@leanup/cli-core-test":"^1.1.0-rc.76","@types/node":"^14.0.23","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.76","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-2z6pc85HnajWwalFtpmAlSz+VfM4xrbtR059neY90+VduLKOH3Zi7P2KSkuGPCleE5qk+CYS7ufDSEXoxyy1Ow==","shasum":"89ac80d04e0f34b93c5bcb0294157439873adbc8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.76.tgz","fileCount":45,"unpackedSize":367257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfE0cLCRA9TVsSAnZWagAAaYAQAI/XVUtKbvZP9wQdN/Pl\njyzbw05m/doXqTCzGgiJiDIJNCY2Vl/svXkN8iiUBDEiSVEDu64P92Sb05Gl\nnB/m27vQC7jfAACsGSTr4uyLJluzwwGcySPVf6+jMthaOVm/W4w6YTiQb+2v\ndXXTiYfuta3bLC/q6dcm6Cqsan5l/a2Xw8IoEPIQBWkQy+rexLxBvoRnNdej\nNuWXtLVlCcnmdMVwqlA3ZwpGG19IND2LvQ0KllftlTyE383u0RyAYexjWqYH\nxbC3L1KlldATgd28jRZ6PW4colRAVKL5KZF1XsKN7jhJWTSfIvRv2Toln56d\n1W1C3bKDyDOTuXDkh/oRkZd/YpHdXbIiwO2OJSmInqSQXMOq+fOt1D3vBazo\nHleR2/o9ZEAytX+QRKdCBAfIOIsoUpSX2E7Rux4uKlk843LpaOLYSWoQuN0z\nR9vxF6+4o6rzQHoc6RlX7SDc6P4KTSAvr3kloRP+xkQ2JHfFvB6l6HvfSDlO\ng4/b6zCxoyWlm/PuQ9iQtHOc862/a22ItgbZvArHjaa7BxztJL38EP1Hg4ty\nZv1+FidKctGXi447kKOpMpeLc3R/iabLR86cesZrHmUPKn2TeNsKL3thSEi0\nn2V1mext3jxy0V63saJF6nE2dR+FaWXs5BeEOBZ0y01MgW7+wsvk6oMnbP/h\nb/kq\r\n=+5y1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIANeY/1B53fwnS49x6QLFPbZ7exZLaOgSAP87y3+C4u6AiEAvg6051mNG6CNJIMwN3C/SrRo3v/97B8gCP0YY3saNJg="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.76_1595098890509_0.6599780409533078"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.76\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.77":{"name":"@leanup/cli","version":"1.1.0-rc.77","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.76","@leanup/cli-core-format":"^1.1.0-rc.76","@leanup/cli-core-lint":"^1.1.0-rc.77","@leanup/cli-core-test":"^1.1.0-rc.76","@types/node":"^14.0.23","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.77","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-FPu/4RXwJGT+F2OTjmU6iqi1HpsscMvSxoWMMPHZrn5SfoYlTzy0wlWm4RBcAw7B92oh9S/PO/EEUSTu0Pi9xw==","shasum":"5d84a5f37c3c9e0bcebf01f5da67bbb297a6d2f4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.77.tgz","fileCount":45,"unpackedSize":365608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfE0x8CRA9TVsSAnZWagAAYJ0QAJgKzEsdpM1/AVotQJn6\nHND2YQLP+uvefueSViaujnlcbnQAVebM8H6ySmm6L88C/dXxDfHbpuv1Uq5v\nt2OfMbnsh3IzQ5xE3XIcSXiRDHidIh65KdX8+NjGWGhITOBfVO6nsEz35ckv\nT1zSmftnxNFyaphdqWJUFO07QJTXH7V4AD3Asnzm6NuFa3pkNX+hsM9I8mEv\nuzHmBPkwZh2qX1P1sj4g36gTqO6wbQoMnB/RpYZnam2Jk9zy6P7zfGESNHFw\ndT6TmQ440QKp7HDybCFQqw6BepGxyJc28HRheKnkrHln77Bv7zDAVXK07zcr\nyJsjHAayGgFAZ1q64eRdKjUEf14g/ZcJBI+vqrxusWvLumuEMUHy5mbmMlui\nKzuPoEnb3VY0IqMkyDGwq0aBjNAQeuTGJq40RomtqbkstTzpUsVxHflk03uE\nyfACx+q1084FdlLSSskadoiymC/SY18Pzb5omHebZXYnjMJCyj0SE5gwyMJj\ngGHXaFhL+gxwC4O/Cd6v19CH9TnTmyC4P6kngFfC8D0L3VrlKjdW+QZVdexL\n6OA3q78xjUBD9QA+xEP2cxgoGJpKYjhuDKdS4OpHVJ/EjKaOdr1IFJYwSmQ/\n2XMWSvIv4iwlLC/wHNs8sXVPhI7/gczQYJCAXZ9BUM2zZ6V1VjaH13fXne9n\n2/nz\r\n=y1Mj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdeeGIqPyKRJhq7iUz1OQFxud1Nt9E7v1D8pvInS52rQIgaUaryn+kZTgAHizMnW5umqJvyxnON4UeL3PlTjGBGtc="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.77_1595100283459_0.016970676046744515"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.77\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.79":{"name":"@leanup/cli","version":"1.1.0-rc.79","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.76","@leanup/cli-core-format":"^1.1.0-rc.76","@leanup/cli-core-lint":"^1.1.0-rc.77","@leanup/cli-core-test":"^1.1.0-rc.76","@types/node":"^14.0.23","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^5.1.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.79","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-OPmttYvWDM3JFEZckNpzzyDjAPl8rKK/LkO/U5FWoN7Avk7xmw4g/Qkkrxd2bKz3oBFHp2mNZERLx7CiEt6How==","shasum":"84862473d392058de743e03716bdddb0f770e1c6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.79.tgz","fileCount":45,"unpackedSize":366002,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfE1a1CRA9TVsSAnZWagAAz7wP/2Rqc8iq+Hhwnx5aF+jd\nUvdRrsBbispNIdjjkCPXfEw6BtnMhHRlrsiHj2AhdlF2u1xRtF6Yl5SXLiqL\n+xB/55E3m2oeZdSWb2X2riWE5deGccdnICu5lS+EwppgbpbFxm4tqT8+y/ry\nz+n5u68/Mf2et8IlBM2885zmbXdbMVsgNA1LY9mbgzyTualgHkltl4egAY2a\naklZ9F68XmhjXKEPOtj1tAui590GwVLyhfJRCyZXFm0/ma2wFIdkcBiiFZ+O\nmr5a6CPmcfmIOWLEd/sMcBzcSVX+QZw1VFuMG+kAHu0pmXl7R53ziYtv/Akg\nDu1IOJpYjFN+eJ40oBORQVRTEQOHIEDLYC3P31CD/06XPYfrEb+Snpmu+l0L\nEwwXeSrOXfWy+7pRLz1yvzCwyP3hOuCvRg08tEZM2bgZB5dW6OKmArIhg/ne\nN6/Q4v7OgZdGJPZwQ+FhBEwxxODddoETc/uLYSPrZXfr7xebx+ggMFgwMghl\nntbOJPfiKlpUkiBv3qCqluCw8fHtJeTuyrZqaXUG/OmZ/lbW7E8NeZntT8ho\nJbYGev3TJC6c7kTbW8SVnLl6fOY87pJ/y8Gih7GUOGYTj2QyX+KIBbUUN568\nd1RUZmKCPpHZLzjD1M2tvggXckTzlz57RTlppprPFsN19E8SPm5FwprLFQej\nRNs2\r\n=RCdI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJVhXtUOQPfy8ZoHfIE/WKzhcISVPuDCNSr/8QXa54rQIgGBc/3KABHJv8IsUGtA0ggceb5rec/9nd2hYji3vQCwI="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.79_1595102900858_0.8990269204148609"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.79\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.80":{"name":"@leanup/cli","version":"1.1.0-rc.80","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.76","@leanup/cli-core-format":"^1.1.0-rc.76","@leanup/cli-core-lint":"^1.1.0-rc.77","@leanup/cli-core-test":"^1.1.0-rc.76","@types/node":"^14.0.23","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.80","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-JXL7sY5R2Ryr5gHG0lamqtNECEFMKLNqTJVME1k0k51VtkQvsTxueres7416DHwYntEZ+ztaXYqCTy9VM0r0UA==","shasum":"ed87c863c7b2001aee6527e435797630860b3496","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.80.tgz","fileCount":45,"unpackedSize":366014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFKKjCRA9TVsSAnZWagAAKyAQAJKSTfuwb0oGyYrUp+wf\nXk+rTvu5dpfEzDNfoyzkorxbBg+cEN3gpNkh4p34N6zmvV0NULbuiQtzERow\nPk4jupqZWMjM7VYrzQpzlhUOWt0ahvLuoZzrfvxwqMbD07IqZ1duCboSZmAb\n0U9Ad/31K2JkRWtMD+YdB9rSzCLO73A3OmN/vFHT5rZsNo7IvR74zmBgNGOk\nB8Ir4qWVgPvGzC+DSV3YMZXAUkZUl9gEfGUlHWLvHwP5mGZE26guFekoWP0I\nrofPTFjVgHXTWSpaxpzBXB4fJhZaBcz+sX3bW3qMwWcsa5pOc4PKSk2h3mjL\nIFwbfh89b2C4w+uzp4JaMiaGdB+c4q5d8R+SzZ8GQkZlminHiRptBfLxALDO\n2lPqUYy5wV1E8tpm5v5vUDdgXsjF3S3dSkZTBrrkFqMOHUXWU+fC9ZOKQoZr\nQ0EnL1amzOKHJDLNw8N4P9hSw48mWYrfuEJSwEeKP7eYzwzq2HJObnjahTGh\nB1ONiPI8QiLOzHjX9UPQjC13nrVKb7h2PwZ2ULTYdZpKLU0cf63Dix0lZ0nO\nVtKFV4WiDn2gA757bPvk3NwjNXFqgectPLAdn6aD8J0R47lwH42KYu66dPF7\nZawdpZeg8V/rgfljPF40gUTX/7ORM7EFHEwdCFQ6it6EXh4Gx1f+bzsc0SZK\n2F48\r\n=56f8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBjO5eTqx0tKcPTzurfWMWLitTci5kLQ/R7nOU4aeijCAiEAoQxMSRR3s9Ez5KgPMtAlBQ4H+wwhMM5v3PXk6F+5jhs="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.80_1595187874740_0.413753843261502"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.80\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.81":{"name":"@leanup/cli","version":"1.1.0-rc.81","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.76","@leanup/cli-core-format":"^1.1.0-rc.76","@leanup/cli-core-lint":"^1.1.0-rc.81","@leanup/cli-core-test":"^1.1.0-rc.76","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.81","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PAOhSK+YjvHX1/lfyjEND76CrUQgclvrft1BMOSE75R4O0jcTRERjZT+uARb6C4wxVvow1/XFKOp83ks8t3smg==","shasum":"00e5133c8b7d5d2894110c499751f27306c0f091","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.81.tgz","fileCount":45,"unpackedSize":366020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF3EKCRA9TVsSAnZWagAAATkQAJpBh4GYQBdNqkQqiK1A\nR61U/alWXP98fMZM0O8v3HpbUMQqESXmH0S7LCD+4UNBRy5johls2t44vBTl\n+WHJXWra9cFFs73Y1kuZ4jkhSMdwNJs7DYtbX/fAuR85tCU+YkLkLPsGx36a\nAxJlllNUBVldXLPLQp0FIrDECVH0n8sqSVi1fLTmjQYTIML+AE42w7j5OUEg\nrEsNsqXKb0jB0bor7kW11dC2iD4nZ/2rPIM+pXhoK61gkuRzk4TZifGUWZan\nFaSUuMAhwvXpX1Xa4vBNopJzj0CVD9AknKKsVRFGVA0+w11CI2wGNDTwYPyt\nnLuX04nB7/1i7qesbnK4bpkTzzRN7lnWv1BI9mubsxtN8+ivi7MQ7d3oZdJK\n5bHknO6KzG7Hgo1khjNU/PunHunFxoJlZzfOO7Fepy+c6EeH4fr07+QQDVHe\nCOg3QTZBouTuhl9RpJrn6xul9OnmXxi5dWdOaYr4btjVUaMGTbZBfBXPrXJq\nA4lJLHc458j2izgirqBph6N0BmgHL9T/obgg7BPxS2iS9Ug7/dB4neIqVN9Q\nEARx2VwCd+E26l1b3WLb2FVb38W24q9ILL3esooD2SbiysNZ+cFl/dfmITIa\npTEJjwP2KHbwMqbsDC4hfG4/jnp+cfNT6+tj5S0fMu1yf8H2xjiXwKboU9Bv\nOQuV\r\n=h2xT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDN3EVHzY3Sn5rCELpqO48LUX2PidtbdUUkMX3pYGDvEAIgVDfRZ+RFOvmAU9/63bGs8gGJeMRiJV0S6A1iKHTpYss="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.81_1595371785968_0.2773540858369905"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.81\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.82":{"name":"@leanup/cli","version":"1.1.0-rc.82","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.82","@leanup/cli-core-format":"^1.1.0-rc.82","@leanup/cli-core-lint":"^1.1.0-rc.82","@leanup/cli-core-test":"^1.1.0-rc.82","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.82","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YRS67s35OLNJIttySU/DieKiGqjMrmdPQ8lDYlOuQfagopNNeog1dew6O/6rWYD8QtdDofuxr4+hn+RMc4RN4Q==","shasum":"30b066de5e0c457c91cc80b1e23ce28429472c52","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.82.tgz","fileCount":45,"unpackedSize":366406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF3xSCRA9TVsSAnZWagAAV14QAISAcRXBf93ZMwhEymVX\nUXTRAQQU1SkxAjn6AYt7bjYV8xewj7jh4b7RyG8vSIV7aLzlLefq0dfJlvnu\nVXXXg6N56VY4ZU+BIWOCTXGqqg5Fhj75mpP6PasZlfv+nbZwW8o5vGxyNkro\n+l+Y5zay6z4egR2QL+z9YIPx67AVhmZI3VEe6oAJsiS6CXjCTGA2Tiv1df8y\n+N9GhWe4jeCXmD+yzvI3ucVPgCIYhtVuECfh/u4+5AvB/pVZkfSxDWqrk6rN\nWrdkeqt4XIVvxDrJDUcfq8XgwE7pIxw1dNvD2P+2Z/13Oo7f7gq2pXd3yDJ9\nYhTH2XqX8nsnsEPKnhppfUFbkM+KXqikXD8BHE7IoviTTjx9813/WBgs9yLo\nvpcLGUrXIVLuLCeCRTHyQU2QJvDBYuP5qFgjuOcIzPvIuWLWZSeHqP8AfLJe\nSIWVUJ2S+b52joAHIWp+8GdvL9Y2PD+PIt7ZDcGKM7hXUGm9geIse5WTwmEi\n0gXY0E2YwYtS1Hh3gUXhD0l06f4usjU3Hh6QnhUZAbd9yWMMlChTPwWsKOHi\n8ft4nZa+CZydBsK1T5NsgOZKWM4shU7zCagqFKrk57ED5Aj2euUvC1/C9ySg\nlEZeM4U42M6+kW9yVIENwWd9MSqTzJ1MDjBWfehYrwfg76ohDKtmUG3Mel6M\nVLxz\r\n=+Tac\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVgN8qP8C7f1bgR7VD+9OAyN1EnbvT27gUVcDZXZElKgIhAPvkj3DHQiHsA5EwxwV5MSFwDcvdj5Y1q/brS32UujY4"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.82_1595374673820_0.1346896382533036"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.82\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.83":{"name":"@leanup/cli","version":"1.1.0-rc.83","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.82","@leanup/cli-core-format":"^1.1.0-rc.82","@leanup/cli-core-lint":"^1.1.0-rc.82","@leanup/cli-core-test":"^1.1.0-rc.82","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.83","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-IHcENd4Sjf1LIoWR1CtWcRVx9HqN3G2dx0a0Th8XT1BMUbk2xOp9FJBhtrDdwIk2awf0mKQocmbLFQmSs8LJSg==","shasum":"c15484086ee2ae599ff8506fddb27ca9f3b556f4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.83.tgz","fileCount":45,"unpackedSize":366462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF4NpCRA9TVsSAnZWagAAuEcQAJ8JyaUwaq6P0ZkXGxKT\ngH+DJtghkVv78SiqWPSi2UN5hZUaPmluH66gTwORMa68I9NI9a75X0AYF6W4\nnQJKQ/9qgWyFeJUIUmn938TaUe5fIkei/AAoQeqP03w10gastro1q9qkz51M\nzsb2/DJG+IM0Npqfq2O0iDvEtEmBkQUmfeQPm0eN03JCFEmwXW/4RXI71Gow\nFfmKvGq/PtbeZuqgapftgurla1fv1pzzXtDMBuyd3A1nLZSFNKWyXLG3SdBp\nNRORDOjTYguexZlHA+V1dRAT7U0uAUFDGgRLxpD8UqpKhPH5CTNJPgOBQd0A\nPjHVqK/7P4JcTkqwBjDGwuAUt3vtMFYy46Cdrp5OitGNuD4TH4SNZuzF9pUT\n/rflV0h/me9CoHrWsR5u6BFwUlWWCP5fZz3N/o5p4p9eBIDeHtOIkjHtR9td\npwGwGcsKsdfXAvjg3h7o1/LDedHZ/L2OFrkIfLMdgx1qRTtSjXlPCoBGhivM\nPVpQwu8S0FjCGla8kIvJNAeNp+GPSHlNMN0TZug4hcUx1oiX+NRswKljysXj\nv9kpZQSw+AsoE1+wdv+UGtTjk2mJaQniFnd92XLWFHxLZSolARq+DNoVJ36e\n4SMYTRuu9vwcCVveTl9iRjhs6rxR6KcpPVT/h4w99X3lBEcrMfi3tkuM1cRx\nUatk\r\n=RiDp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNO3XY7/NrTKTNAXX1BNXB1BldUooBmVnwyTVrzKAn6wIgXrNyM/ZTJBvJK+X9iRC3fIfqHz3NB3AGjTnNnAICD68="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.83_1595376489138_0.7431208240182852"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.83\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.84":{"name":"@leanup/cli","version":"1.1.0-rc.84","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.84","@leanup/cli-core-format":"^1.1.0-rc.84","@leanup/cli-core-lint":"^1.1.0-rc.84","@leanup/cli-core-test":"^1.1.0-rc.84","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.84","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3s8wD04rN5sKQi7nQSK0RHuSOmAiv3R3cVEkr2brVzWLVidv/7mVZOvaqNs6+pcQg/Xbe6DeNz0p1KJhz/o/2g==","shasum":"cbb021331a6deaaa7f05758d1e8bff752fd53958","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.84.tgz","fileCount":45,"unpackedSize":366462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGPY8CRA9TVsSAnZWagAAAVMP+wa06WXSpGihpXCFDsr0\nkmbRD0XY2H0qhcgelbkf2fQr02Zpwvmq7+aydZcRR2Mcj9M+ESZqTk3ZMy4r\n1C7SuYAHKw+e43xFM/v17RqItJz7E5v5OR/+zYFYjB+GD1eQ/oZTToE0bwhs\nYbr69ajHBTqjD75dOx1xmLqhoVeSwIK/OYdmhbmItU98IXoAxpeQMA4D5wih\njqHahE4HFeZTm7cgh5i3aXC3IFTYkySoFfunBFcQNXp4f6sJLlnLOVAQ/aIT\nZIFcqT41eToWnkXd8JkAQ+AqK2k7bMh0MaDjBg2tXPk7BElSNQbN+KwXc1Xg\nGryv2OhXUSX02kUv0uV1J62YjGiH0hH6s1dTWa+5mpnIodI2LYBhU/Li88V4\nyZwQTQiXJpc6zESwTrWvllQR2AUU13m2jvb9AyXMGw12KvPmr7cbVGiFzS5e\nqmbdbFrZw/cV/U8NU7bMnEiUx2fybgNJmUUGypiiTcpYXAUQBrkNobAGaPmc\nZAXoVLz/cVk4LPntNIVa2c/euA786HVR0CCt4692lr3aZqB66FnWGDJ4F43P\nS54VjFA/fr7uxdzt/8KTBEW1e/iQ2Wfr7CDW/10t50BuURHySGrFwNR5zR4h\nnQLxysw1U7ZNso0B41FUWGXrc3hMuBYsGwHuzHGg2EKjgajGAZ+ZZco3bQ/C\nDQmK\r\n=gMiz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+cEupvn+PYDiy87j6xai0d5kxShRIKcY0aMfjRWFlmwIgSZqVYNRqz/7H3vy5y8bty0R9fQJTrjCmKAVSSYFb9rg="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.84_1595471420046_0.1085898011588593"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.84\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.85":{"name":"@leanup/cli","version":"1.1.0-rc.85","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.85","@leanup/cli-core-format":"^1.1.0-rc.85","@leanup/cli-core-lint":"^1.1.0-rc.85","@leanup/cli-core-test":"^1.1.0-rc.85","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.85","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BpZZNxxdmLxO8iTt6+oK0kkm1AJ/iiuOhbx2NSGQMwyF+YniB6ino0mvSB7BZ/71KZn16ixWhFsCOADITvffyA==","shasum":"2d7822b076516e5cf641cd7b6eda81fd884fc968","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.85.tgz","fileCount":45,"unpackedSize":366825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGQMqCRA9TVsSAnZWagAAjdwP/iXtH7XEHSukipOAh6LA\n73rBfbEmK3gXuxar3LDXgMzpDhNZWUwRAumJRdke+TSJ+Q1Zo9fw3fWp13q2\n/wV/9M70wTf5yTef7vOt9F8Z3dLYEQF5e0Hj2IcUQLX1kWAzN/YrGKgr0PTR\nbNm31bnQQNmzmkuZyJzIir5iVo8KqeQRSbWOSWe1Li9RUpvC7Bkkej2RPljM\nWwIGYIja8o87ur9FqbL5nZgCL2yrhvgTH/pePH+iJN8lIlXPr7KYn2CYEMgD\nOLnYVRYmGxCG0SYZw0CS7Flee8aZM13hY0rvQVzM02Fr0+bBlvYfJ3j7OSan\nzgyrWXZSQFQ7FVBwWjdVVJjOGza51GNL0iBATPOaGJ44WAjW2CVlcxaQETHI\nd2hRqATNjJ8ih7OiKwMwFr92q+FpN4FLCbz0j3jpqJM7degU8u6xdtpplx5i\nqQlyizRIxbcSW//gDzhEEHR8rQaKNsK7HZd5xRW0w5QNZreMTojqeLZY5oe0\ngn9vnanV+0Wc9Wa9zZTQNwR2lO31487t6JEBUt8DZBWyvBU6FUK7ECqPD7Dx\nVVRV3A75ycLNTLJbzDhVjWb/vamJZJp5DyBkcQsvvwM8xz7yUHlINclluNwH\nMLOiNXkmXxAJBvUVRHRACVkYdxY/wdP8QnvgVhBfto+m1fhWfk4d0NJvG+u+\nOFXo\r\n=ZpUz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICAIvvS0gasmzEQP4abAk8KqLl5sgpZAysWw73LVshhUAiAqMN14LAgFe8V1AIN7zyd/67fsaGTCjvA2luyftDj9Fw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.85_1595474729544_0.7782242575917886"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.85\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.86":{"name":"@leanup/cli","version":"1.1.0-rc.86","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.86","@leanup/cli-core-format":"^1.1.0-rc.86","@leanup/cli-core-lint":"^1.1.0-rc.86","@leanup/cli-core-test":"^1.1.0-rc.86","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.86","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5zcCpoCmvnIPNaS6C1r7zjx4GRLTYCFkXtHbJd3ERKGcSpCmKLI5CZVANs7hWCOl6ri1brCQK/ilXwr6EuZJbg==","shasum":"c0a5002bae057778ebb5576191479320c1a6eb47","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.86.tgz","fileCount":45,"unpackedSize":366825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGQo8CRA9TVsSAnZWagAAxZAP/0jRHHszkMZ9uvefpGM0\ny2IdGAMeybVj77Xfn75SuILbOVLocQH3SginnWDV52XuLMWv2cMRJ34MFF6/\nq1ypnXHyROlJVFhkNWiM42U2Ij48YEanFfohbD6b0fcSFbElTKcAL0BBcBDa\n29JrDggBoEL85m/z64duPt9bK0T9lDrlutj3J9vKpsUTFzpuUvdb/UKz1cFG\neNofRReuVdyiT37WPANitCAq4W5rSLenRLQsndQjeofIoCUiQhEiINb4fCYE\n5QMExh1hvJFt+IgeVBA6RqWnhioLbft5NtjAUW59u5QkVDybivrb+imhvBmT\nIt/wspjH5ZdF0dVepYJ/i+HWwdHKqdSmaJGN4LD5oNEmKs0xNtjGNyYBSlH2\ng4aXFZUdbk99tHqP03E4darOy/MH2ai/K+gnVeRFO3vfmNfW3MZ1/t4CACpm\nYUQBFiThsgRuCKbOzK9Hcoq6tXET+vDQP1ttSfCC8Z7HjJZ4PbjGcdzZ2LZq\nLrP9GAjtkxQ3ueUlKg6NgQF8Y404TAiM0kkn943kIDzNpWRdE6XFyOfgU32N\nBF+MRScbhp59zoPbf6MUEaRZtQkfD90DppLDQYooJhrayuJqpAmpjX+5V2lI\nT73wVB5+ync9051ah7/aeFtcmJ2Lov845kQVYeqE0W24FCv0RS25rmQ6LyzR\nflnx\r\n=fP5M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUzXSe4V8rjBDOl/zZ/pe4maadH3GAekguUGzTQR/9BwIgORY4QmRCicz00WhVqEbM9T2Vfyj+Pw/NA5Auquxp/tg="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.86_1595476539709_0.3017332696487802"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.86\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.88":{"name":"@leanup/cli","version":"1.1.0-rc.88","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.86","@leanup/cli-core-format":"^1.1.0-rc.86","@leanup/cli-core-lint":"^1.1.0-rc.86","@leanup/cli-core-test":"^1.1.0-rc.86","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.88","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-j58I6myjlkROSoeB6TNafvR9g0Bd4uO1tsr0L9JE1RQqxmm6FfOUYRe+UPWRWUSTIRAgQi/b1PsdYmwcSl6PSA==","shasum":"3bcfd36fd67fd088283468b2a588bf91fb48c991","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.88.tgz","fileCount":44,"unpackedSize":361372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGRf7CRA9TVsSAnZWagAA9QUP/186WUuDc0wI/ajkShB9\nIWNeBEVzCW0Hb0jmjOgUNmYXIAkfm7jnyb59o4BkHMVTd0XYxuq1nZmyPxpC\nM5m93khyYCxe6JnnvWdQEdfKVjZ8tTCwxdyiz78uTfAc6a69zmB3JrvpGgaS\nlO8wymJmpClxADxTKY9GcpqVMF/jcS19MkYG8665S3Td0Gq/O1TeEXkPd03Y\ng1TnZXzrWp5EBzp7r4l31ROD9MvF0QeGzS0Bb4vi9uND9KA7ZF5+R8pg4ETn\nDO+dt5VAsjn3QHJ7knKLRInqbXQeDz/e69XspWqp0o7h84ZVrfaTjUqH8rH2\nLwY05tZseWLXHzLqxjfatwdcU3GZOaplD2Qm8ppiuR6EbQnXQyh16pRUidt3\n0CsN8eB5NUX+8H4pNr/Ju/JXVHMhAVz5qNIzAsBsiKeioudZhs23hAACq8oa\nggNi1PxmA9mSikAMgOjAkM9Dqvdi76a60RcNHozo+eCJ2OrzUwRDkltc+zq8\n2ah2Cgbqx/YGRNJNG8ItZf336mP//c0Q37Jd92wyHDXeUk01I1GoMAcLohUK\niUfKO0QaSSQGt11OqjgCTdVNSTZh0E8AB7q5kyoD+YrtWTRG+5Uc79uuYCN5\ntJtC6YXz4t0lpAxrsKGPZLLnSRswoANRQ1NRXVCcjwd8FUNMHL+PD5Qq0Okd\ncMSA\r\n=VNbj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCk762nU5OcW4Bs6GWnlxcd/vsItUlaUAYGU6lRMkKQ7wIgEL1Kd0ovNzHeH8apOyl0S/KjhMXU/1szKYc7sNbpmc0="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.88_1595480058919_0.49578384736547143"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.88\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.89":{"name":"@leanup/cli","version":"1.1.0-rc.89","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.86","@leanup/cli-core-format":"^1.1.0-rc.86","@leanup/cli-core-lint":"^1.1.0-rc.86","@leanup/cli-core-test":"^1.1.0-rc.89","@types/node":"^14.0.25","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","graphql-tag":"^2.10.4","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","graphql":">=14","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.89","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UvE5wnafBzQBS0MLxx3Od8iSu70FxEbVS2YzelWxRzHbJjE10T5xTpB8gBqTNM1jrG/++7KcZb5PdbVOylst/A==","shasum":"1cb279bcd5be9400cf3b4a755b44e929763eeaa4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.89.tgz","fileCount":44,"unpackedSize":361372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGmOfCRA9TVsSAnZWagAAHBQP+QAS8ZYq1Z2X/B3ZxMRh\nNwQErOU8+BXUZSvhIciP5qRInKhvqQHOM4enoX+S5gnxiI7SCUZsbxphmug8\n5RaFhYrLP1Y2cCK1zSzEwwebS9/0XecIY91C5OTluwzDf4DuEIWWbpEEUzoL\n0sLwKWHwF5Wi9ElOWwDsUJW1ZJ/YQwfW3QolTlWINrdEetWSTwiKlGfPPu5s\n5ZmYYeSoUnrfgMecV7Ry4gWAJWai/OlKVvwQu1Cz0xYr1Ggd8bKm8rgEzLyy\nLUR/b6m2zhiXv1BQDTKxkApBsNb7KCu7+lK2BUk/TT24XDmM0ar2bZyRSSv+\nuAF7XPlFdaITUpVXnphD60p63vafRRGfhuknbgwYNiaWdk4lE6XEw4jfAEHK\nnHZZAR+8AjLLLIjwvaU74yQtgndZ0RB2JVmXDsGayi13HYFUwjVPlG/WYzcD\nZG+7Gwz5FcZUB1NLYJ+UJNr8vDsPPbVlUpQx1jA0uLJo3k5yXk9Ccuh78I6P\nQdPh7PHgse8Myynl8TWsc3KhAW01E8u0qRm0juj5DbkvwtLjK5Ra6AthAcmB\nmdTZl0Ay/Dq6fFTUr+3DgoeqFzs0bh1Dgp8HtI0YJY7c7yuITBpy0uFdf5k4\nJA7Z0iOAPcS+PFFeVRerNiytcYX5VfylUQqi+94zhXb4IdRWHYy3rWNIETOR\n5fuF\r\n=xKYp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFms9Q/SORlzRmbtaIx2A2N/TI236/ioJjMdrtVm+YPAIgNsie2zLOX5rLh/nl7b/aD7ndTL5ykOxL20P4GYKvtu8="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.89_1595564958604_0.9334087333731333"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.89\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.90":{"name":"@leanup/cli","version":"1.1.0-rc.90","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.90","@leanup/cli-core-format":"^1.1.0-rc.90","@leanup/cli-core-lint":"^1.1.0-rc.90","@leanup/cli-core-test":"^1.1.0-rc.90","@types/node":"^14.0.26","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^3.6.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","webpack":"^4.44.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.90","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NDgrSDHG7BWb6ZwjRyrZlFpMG18RAMWTT4f3RdDJx4MAU8ExhhKE7YFO6h4zTPj0MZy313K5/g+DLq7ZwJOjlA==","shasum":"753bc35c9548faa4c0203d91d719404f5d9b0be0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.90.tgz","fileCount":44,"unpackedSize":361206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfG64dCRA9TVsSAnZWagAAhgcP/0pamPwnX4/G3c6fFmzZ\nRAEo6S8L77LV2lfC1NtCYWcHpdegMkD583QkyC0Bg3N+g1zuL7FK7rjgmmy2\nzVMAVDLXZVLgkMLMzEk7UvHamt2bXfaDj1B5I0RgNAbH3Ey5l9VXIFnd2NtW\nS/YDT7YUqv7WmC7WnpVIaJ9MKT5g43dTDXETMNigVCItiSR7QBY3nnQnDQTD\nszBc11UzTWj/7vSDimarclK/FWcUOGWcY2MuE0JmlXm5Afxi8DZBL5luva17\nrEmFo/xkA008e6ZFEeUoFsXlzr6ddZgFZ6TVEeiPFbUrGDX1EaA8XYA/2kyl\nsD8U7kfrGifMip0uz9AslGO/CAPeYaggw5OjlFEZszi5HjkAuXk7JH+dhctn\nZFnGPrD6ykO3SCkGL2R0Z0Fd2Ig+LAiKdEDCpKm3IHR5jmUgs4ee2XQMxpxQ\nzNOO3wBI+Ret3CCrodzE7p2fRBky4XG7hYmdqW8GgK/SGKI42PlQON+GSEtA\n9/1TryihVrR9kUMm7+L7PGuDZAjG9lbDAwdO6YGhLSHab4xi1jMJCWGl3cRf\nZz5CEnWwhG1K0sPRjYkYSTTN1VFpA+MUgMIMqB65Dj/aM03uopHLcqAdeWP6\n/STzgenPqFxVPrwPeaDE0bL1CRi59sqF2j3NzZ1bdlfvZDQerqWiRnoZyDpx\nzkf5\r\n=YwOW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFmTT+A7uIKFRLc+48d5zp7Tuyo6/q7Z4nq6jv7WWjQfAiAWde8PiF4a9AxncNYqG0Z6PyX0E1Kz4KgQPpwK03M33w=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.90_1595649564508_0.9622141991020066"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.90\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.91":{"name":"@leanup/cli","version":"1.1.0-rc.91","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.10.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.10.4","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.90","@leanup/cli-core-format":"^1.1.0-rc.90","@leanup/cli-core-lint":"^1.1.0-rc.90","@leanup/cli-core-test":"^1.1.0-rc.90","@types/node":"^14.0.26","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.0.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.0","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.91","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BGRrhwg6TsMu1A0tm0GXbVL/pBbuoeNiXpcNBDFlEDJoPcLALYUEefWutf9ZArORrkd++JxenEqbfUsM3Tc+Zw==","shasum":"a6d5d3ef46aed8394120cde347f3477b0f3d2b5a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.91.tgz","fileCount":44,"unpackedSize":361510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHll4CRA9TVsSAnZWagAABvMQAJR0Wg2Il24ggfrFe2Sw\nfsjs4jRvVZk6+WeyxWybn9QaoU/SaqcXSNBDyXfmPDso+9FXdnY3NyTCbKlF\n3D8WAdM7jxArx5NqZumvj9UG42L3Bc2HvrFWMqqrkCeOOOV6AiSk8rYK1RbT\ns9ha/u1mmdoJRIqAh71ZOMqJPuUpotgiOs9vqRuPlhLZoAsIdkJfgkAQMX9O\nv8sbZXj7b6r7wc+NmXedDag33mY6mm0ElSLCLDgrNzd7umdfXZH55w8/1pS5\nh0OAGeS8IXYjiOgLKFunQT4L2woQ9uKH6eCbdzw/nrPY2AVJ1W2MhL6Df30A\nrZJ22QkGLdt1fYadO2h3b582gjyVcfIhHSJ/mZNk4HUCwv7h3XYdWbFXOFJU\nEwilwlk+10Mz0i62v1hfg6HH1vzT4tVQA65ahavIuxNv8hS0XturgdZWVdO4\nGHhTKPoTV4u2c02xpuFvBEpDmd8CIKkXKhRjTC84BjBKRkDx0s0ZqqZpx+Mb\nfTmzQEgdhZ7Y0UjjDwta2uZRvZbREJ43uSUusLmkWf7/ZgHu4LL5HZ2Y1rA4\nhXnfbAX1aQ+xMbOxq9KyYbuRfEUlVNrP1+qc+AZShzrLS1PkypCkc1ufACjy\nvenjAsjDGTD+ijQeKbyF+lO7ClaO0d1TvV/JdAk0s+bT+qXJrLGxH6s7P2eR\nT3Hh\r\n=rdhR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0c5cLVZ23yWbLRaybxC6ltszWHV/OSBsYsF3FK3sxpQIgcz9bviGa5Nckk7baOk/Iu4sllQos03Xp7NF8HS63eVI="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.91_1595824503798_0.9696701265490648"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.91\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.95":{"name":"@leanup/cli","version":"1.1.0-rc.95","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.93","@leanup/cli-core-format":"^1.1.0-rc.90","@leanup/cli-core-lint":"^1.1.0-rc.93","@leanup/cli-core-test":"^1.1.0-rc.93","@types/node":"^14.0.27","autoprefixer":"^9.8.6","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.1.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.95","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-cZWWQfQSt9PKQPI1RCD5I/lIi1Mo4vePuuDQ6BWR+cysVz1itfPVQUDLN3yYQL+tIOVdQ9alaRkTzZOK24QaFw==","shasum":"0357dfe962665bd607134097309d2499e72658b9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.95.tgz","fileCount":46,"unpackedSize":362489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJDBFCRA9TVsSAnZWagAAZNoQAJxltfVodKwqBOHb04FM\n1P4pHUcSPkfocwhwLlHEEfJ8Rx/xw513KOKx7rPTTdyMwe8/eS3tZmryWmTZ\nRBatdHVoaHqaW/fkxSH0vJd8Z7qVuUtnaosJaUTW7z/kT62dxQEPE4p1sJGv\ndGPXqYb/9b7nRlQo2j1Wnhyrqqu8UqzTCqwp8K7PZkG/5Sek+Tr5C9kKj2s5\n9o8TlInnIfNVQ8lwXXt5Ig59iu9TUJSW3j60a/4L0IQjBRBQ7NvUSZenS2Vt\nH47EuAyKcJ4tjjs6ua5ykbLOvdb/PXaryY61aohhfT5ER+/u3y2bkJAUlsvL\nmXT0KeaHjYKdFtb/yp9U4ZS0D+YWIYu6FFz19CFkRbEkH5JmGXIpvO4+ESM7\nGhEvHiQqpuUNL/b0DMO2pg3DpeDFqwCBFZFPVoMyvBkHRDPbuy2PdCTD/0Nz\n4+C76ytfh4kt6Hq2qStJhpL1EtMtzxW71rW3jx7AlTvyk/xXwaDGzeXUMwDu\nqMthw5OFsxdVEuz5dywMiyQLT0GZYTUblKs3Ca7HhbBmz2v3d6oWTV58vt9X\nb+ja5NYcDESweuSgRUXM5EflKzbmJh2+iyQPAT6yTNR6t/NG0i7DAiIoeNwN\np48XI9iFzwPvK4WW4u36WeYuwd27dbNMfXy4dqAUJgUhRGXvGl2oqgDUuV2C\nenGI\r\n=kJsc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0IpQs4ELlMHW4HD5OVi6pcE9Fk2V+xFY+cphMwNuABgIgFgSaqMTsqROuZS1/gBgmOcFsex2bS+plj10t5gnwNU4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.95_1596207172849_0.05666741852560331"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.95\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.96":{"name":"@leanup/cli","version":"1.1.0-rc.96","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"do":"cli.js","lean":"cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.96","@leanup/cli-core-format":"^1.1.0-rc.96","@leanup/cli-core-lint":"^1.1.0-rc.96","@leanup/cli-core-test":"^1.1.0-rc.96","@types/node":"^14.0.27","autoprefixer":"^9.8.6","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"peerDependencies":{"chromedriver":">=70","geckodriver":">=1","selenium-server":">=3","typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.96","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GxP/FCQhanFTvfps+YCO/1gJkx68XcY6fPkapng4SgYuSKOrptk6JUf2DJDcH4I88d25C6UITofalgs4OKjldg==","shasum":"7a17b0daef109d8c563cd2e502f1c1d6467bd3e5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.96.tgz","fileCount":46,"unpackedSize":362489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJm5NCRA9TVsSAnZWagAAxkMP/2HZdHSNPZdiL+bH9KT7\nMMQ3HyQUKLPQmB4s7MoPQh+0cKilbZEuKVPiNtkJwjsOR4c5jz7wjsZGYzVn\n1rq8cEpj+EmyAx5j62bX7gtAaKHl+tIB873JhhDO+57HybXerQXcbSbDE3Mn\nIppgi/dGEDQoagd7m9wxr0APQ0UJB1OsTWOQhfHk3DZqW7JkkMPH4QINGs2L\nZ7I4p/pMDrkiSq4t0hB3mTXNwyQTXXVFcUUYaQIylDLfa97vw06/vL9z1Lk+\nchaWcmvPpw/5qdULKJD8cE3vK4JkkAyRop2JtzWZJrKM0/mqt7IzYQSp5bp6\nTzXTL+lvC0LLrJlwHFeN/3bdmU5L1pAJMza9qW0jJU9KzWs3NWdmj1eme4pU\nQ9xoUF+EyyzTaQpPOlWZLkEVtoGGypKo4YIJqmHKdyLKzjAQFFpl9lJ/bLe9\nBsfIDAE8w9ubM17kC+A888ZwVELFGxmZyoVcE7zPuE8A+XC3QPyhpZBNfgy8\ncDT4KtwI6TPJok8agPumKX03mvzu0I2DkaevrHcW97IZ3FYpmXqGnjuqGNJg\nkHffo2u2YZWyrUJymJR2Zg9B8VoT12OqQR+DcSy62A2KF7rTlWwrpTy7AOXj\ngjJ1B2GpPv3F26XKnRYfi7fGakx/j6iigqQYZ+G2NgexbaGAMCLQNhOAUKDi\nwSLy\r\n=ULsa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGxMJsstDoOEFJk05mwQfs8bjjKHF+lsFGDg5yAuYAuPAiEAv3HrlPS2QkQjiLRmM6/IGXwmCMEfMByTXD2eIUaLm5o="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.96_1596354125297_0.87353563163636"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.96\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-beta.11":{"name":"@leanup/cli","version":"1.2.0-beta.11","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"lean":"cli.js","vanilla":"lib/cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-beta.0","@leanup/cli-core-format":"^1.2.0-beta.0","@leanup/cli-core-lint":"^1.2.0-beta.0","@leanup/cli-core-test":"^1.2.0-beta.0","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@rollup/plugin-typescript":"^5.0.2","@types/node":"^14.0.27","rollup":"^2.23.0","rollup-plugin-add-shebang":"0.3.1","rollup-plugin-terser":"^6.1.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-beta.11","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-o01ycU7vufISd5Pj4KA7eDSgQIrZ33PYgJWUks1Z2OTOtxVgWvrHTlrwLr3wWxwBZAiZ+p9NIG4y8Wz6n/6cew==","shasum":"84ae1e12f21074bf0a6a8ae5bb79ac5d8bf13e97","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-beta.11.tgz","fileCount":58,"unpackedSize":386579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKB+fCRA9TVsSAnZWagAAb44P/jzPsZJsXOfv72h7hjzF\nlLSMVhabyRpP0gztWfXHWr2neFr0C+HYzcrKkQ5n2W/7MCnFwyirNS0Iv/Km\n+AaePZS+YkqqDKCitHO7XUu0UfhLMk99hq/i3UZC6nolVgFXg3UE5WR+ASsz\nWl8NJ+lc9I4AvWFFnytdNANhRAWScxWu+DDms89ImJCbxsxpPZR4f/o38jNG\npFVjGTPzvi8HTlbF0Z78BxYfXTACacU3zjyQPRSFYQYMU/JX7JZ7A0xf55Sb\nznZMmPNs9nOsiPuCHdF+0GkM1QYSm8Hr5fTL2Mbih02KTTOQKcO/EGL5UxfX\nNcrlSEgfqfYFwfhv/v0/+BwdsrupVffeYR2tUmgE1HtzrS9QemJgqhdpNk2S\nX41rTf0P8QuGM4PFWSLcgSDPdjr6PnwD7qmbzG1ea7XR3bjusvtz240Ts+Eu\n+L5koN5rMmv/PvN+ojRIzOJoFOFLi82XtwYm4FDsIdhTRpNqaVlW0VQHsDnR\nI8eFI+D/2HeRI3vQKWZmkNfEiT4G0N0OY6n+PihVyzzB3gyFvRUkulT5T6ak\nEFWAMNEm9h//UJXffFaLmG5SGiX7TZUw9qFiMoq6kPZDZw6D3bfnsO2cNXjB\nF3PgmzherxKIgsFx+6g7lieb1eqWgd29YtqyeMFbyxXjgoTUuK+BppJMEPhU\n2q9Z\r\n=LuQT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC52l/I+KWAttAeNigYZlPaqCscfF80sUxyerI5AnoF8AiAsk2TLmV3AH5QvzKY4wLJXl5ydSfi5sdhreOroFTt6HA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-beta.11_1596465055372_0.6799878655721685"},"_hasShrinkwrap":false,"deprecated":"This version is no longer maintained and will be removed from the registry shortly."},"1.2.0-rc.0":{"name":"@leanup/cli","version":"1.2.0-rc.0","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"lean":"cli.js","vanilla":"lib/cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.0","@leanup/cli-core-format":"^1.2.0-rc.0","@leanup/cli-core-lint":"^1.2.0-rc.0","@leanup/cli-core-test":"^1.2.0-rc.0","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@rollup/plugin-typescript":"^5.0.2","@types/node":"^14.0.27","rollup":"^2.23.0","rollup-plugin-add-shebang":"0.3.1","rollup-plugin-terser":"^6.1.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-T9ONdx+kH+jJVJ7fLy+3Y7QYXCNpN7TiF//V0KfqKuou3ybto4r3gBZjn0XwlZGTXTqycM8UVfkkSt/FZbDRYA==","shasum":"997924cf2326ac07105294c91fd6a45c7e705287","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.0.tgz","fileCount":58,"unpackedSize":386568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKHZoCRA9TVsSAnZWagAAU3IP/0tvA+OvSsfQkcc9tTEK\nrpL9UjNHz3DbToxWZwQg+1V/QcW0quiwm2g8M7Yug6iZDy2srJiFlc3iXm7J\nPFG6Iw6KreCyrFQEFH8LxOe/gLv/zANa/roEjKz4VXElIgQC0w5HLSaTwnkZ\nuRKpXYBaxZX3P1jJB8pnc3MqnsDrsbeCeBMkAQLax7h1LpmORMYwPabFVJje\nWHSYosYIZsOv93Xm5t9A7iMYn/7LGKhoC+bloiJuDZyiUZM/7xPH/4WCmOgy\nDOHZWU3XZHCVQAOZ5j8q7BlCwAvP1xITLEaBeEV4lkP/hx5zut2sxYt593sj\nhkpifx7h99zMzZrcGT9/wz0/8wzBwrODokM+4Vptuf+urg/Tx94wRD9X/HBU\nelaZYfkCsWI9ca5PlTPloPDz42HOxjpLUIUiB4G7MY10fUACEfCtcINYjDih\nQgi+dRXtZC9ACEpXzVB1nw0z4V2MO0OaxZkf/s+3w01MOiStlqtBB5wfeRSP\nEiUtcS2xiVjiMK29nxPtl3vhOlhsnrs3CPzNYsZSN79X2ZQN0GrIE3w1R9rN\n0ujMnDU13bYQOMqHp1D/1CkTMsS+0l0qtZelSVdZ4zMMnFs8axL1+jU4IDyN\nHhcgzX73qQoW38gXmpv80uQhR8Vq5xmkNp+pcKi5GEQEoo0tALPjWBy4Evma\nTJ4X\r\n=1Yyt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHBMdIgtyBawNLL74SrJfuguuvm+bm+Kq0sFqkDDU/spAiEAkesMc2Tl6ZTf57+IgTK+Y35m+MPyly5CkS8tgWZo8Hk="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.0_1596487272300_0.15564600847337906"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.0\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.1":{"name":"@leanup/cli","version":"1.2.0-rc.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"lean":"cli.js","vanilla":"lib/cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.1","@leanup/cli-core-format":"^1.2.0-rc.1","@leanup/cli-core-lint":"^1.2.0-rc.1","@leanup/cli-core-test":"^1.2.0-rc.1","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@rollup/plugin-typescript":"^5.0.2","@types/node":"^14.0.27","rollup":"^2.23.0","rollup-plugin-add-shebang":"0.3.1","rollup-plugin-terser":"^6.1.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.1","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RmhdrOt4PedCzzQ/F0KsGtQ1YEhukaq4wWYuhiw9pGyrUPB2Zc6b+FhFlBSIyrwxQUP9+oI7jNniS5mPr40BnA==","shasum":"cd78954cec3e9d4b78b0efea2115dc7f9acb1120","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.1.tgz","fileCount":58,"unpackedSize":386568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKH8oCRA9TVsSAnZWagAACTUP/jhneQXaaQrpCStBgJZ8\nMJVpk+TpuKRmyNqv1ya59mc8mQgpvL2Is7LhjOpjnNhR0QqdEIBJ/yYh4s2M\nzFNn9ZO/YT139GaiG/DaXFgMVytQrarsaXzzmxmVO81P/a2HfDPFDYrBjBSq\npkaWSXVhYklnAWOCJrE8Q/Hompx4rLRxBTu61kBfZFQfL8fpLUBFAlRcciS+\ntohKPalyO2hV3QnItZZD1u8H0S4rD2tzOz1nWgaXFkqLadj7LtX+ocmPxsSc\noOn7xguUNUDNwK1dDhJjzJquijCDw+E75q2958oFBxa7nlhiYb3K2ayaZuD8\nbppZlCf9Gn6pdybp9kfKNNu/UGB1xiF1uYfo5tox/QL8Sf6uZrrSMYWlKxz8\nkt41UUMahGiPrq12J3ixDLegbPY22LtNWTpUW65ZGWuv9cCKIKe6r3vpqvnr\nqsJyezDZEiIIBxvBKId0Mb7eStj9VoIuXZ9hKf6i6ORa+ss1xjKRmkc30n54\nomj2bXxyD7d5po6t+sYMtIfJunFOyOhGW5jG8/aKUlFgkgyTS+UdTyXzPTWM\n8nw/ZdqzaZeAJetkvL/ZbNrKCxpTqFb7kVSDt5DJdTb0k9sVf054w2Vrco31\nOXmSkKf8CuJ4ukQVlgOx0tIPQP8/EfEomQM5S8Fspy6parUHqewl2STxuD7W\nHnlc\r\n=rCvj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrWQBsXXfC94rBK3lhxiMswgX5EcEdfxWt4N43i44LiwIhAJdJ6DT6y3H8x4XmN1zG+h8r0Zbwqn7PBRsYjL1n02ZO"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.1_1596489512308_0.26174747521797603"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.1\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.2":{"name":"@leanup/cli","version":"1.2.0-rc.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"lean":"cli.js","vanilla":"lib/cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.2","@leanup/cli-core-format":"^1.2.0-rc.2","@leanup/cli-core-lint":"^1.2.0-rc.2","@leanup/cli-core-test":"^1.2.0-rc.2","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@rollup/plugin-typescript":"^5.0.2","@types/node":"^14.0.27","rollup":"^2.23.0","rollup-plugin-add-shebang":"0.3.1","rollup-plugin-terser":"^6.1.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.2","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-opOzD7OXU1sVjhSo3uwUERDg4rb7ljuCwuddpXDb9iJPzxFX+iL1UNPKEAz0BdprOXYKzxdSGKXOoEdw4O/A8w==","shasum":"4f81158c54ae84182d3edce58185946bd18700f9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.2.tgz","fileCount":58,"unpackedSize":386568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKH/ZCRA9TVsSAnZWagAAd+AP/j++oIir6YxpNLtlLFdU\nihJIbRgSdy09TOhE5TGMh1kkyCDxj64MHoMKilnJloZulYGnvEQc+6VswYRX\n4Ty8whuD5Cvg4he1SOuRjDk2+BZHa9sRg3yXjBbO8S9vnPSOizPA97V0al31\nCGzKOgB21qSCfJR+Ns+Hid6PcoxGOmo7Lx4zh6gDRFC/A8H93eWgXPMQe5nh\nqvswlj/RdpsvU1MRpq8YDVSx+U98fEoGxl9JbfEXsLxOQhVwPGULXnMEVQAV\nfYZJnTVX5odaz81V9Bx0bm5WeU9J/V3dskBgLQLnWETdh1Wv4qkLuBL6w67v\nL/eFTM38HHAnlV400DXkczpIUFMXqDAiLLIA4NDnbDHQn9kmIfJ4Lb/jxtdG\nHiS93nEfySC7pwepoaRBIYmeGHt6JYWWNwJkH+/iu3/DQ5wD7eaMTl/Wcrgk\nfGUSGas7FxY9dNRDAhkq6cUUUwcT4BbEwVE8aaqJVnGc9am6zlCyJokE0WrF\ndyoiwGKOZQWoxdj4UoS51KFEz/nLfPnrZwFBhkjcuTGb6VB+T3Iwh+FPFNMJ\n2/yP88El5tYlECFXyg3KSWJ5RIrBI/0lP0xtJrCtslLm4reaj9YfiqFc9DUE\nV/3a84yNEmRdrw+/Uo+fYbFnb4FNYQ5AGy2W3xaYF25SD/DaJHWwJc6ljmfd\ngbm1\r\n=QOVn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtxgraWkBv1cLGsdU7SuegPttJuzSl+Cu/gm72SerCDAIgel8W/XCcUcvWQZyd/TngaeJaREfGi01D15XEZQ3WO94="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.2_1596489688616_0.48076349181314937"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.2\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.3":{"name":"@leanup/cli","version":"1.2.0-rc.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"lean":"cli.js","vanilla":"lib/cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.3","@leanup/cli-core-format":"^1.2.0-rc.3","@leanup/cli-core-lint":"^1.2.0-rc.3","@leanup/cli-core-test":"^1.2.0-rc.3","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@rollup/plugin-typescript":"^5.0.2","@types/node":"^14.0.27","rollup":"^2.23.0","rollup-plugin-add-shebang":"0.3.1","rollup-plugin-terser":"^6.1.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.3","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Kur+RrEz89LscBbeSFSSNxKi+OAk+pqJnFHQ+vgni66/e2+fxD8oZIJebMv4MhvsLhP1Oz9aYT3V669oSFNE2g==","shasum":"fde3bac4dd6b6a262559a05e9a217a88cc6e403f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.3.tgz","fileCount":58,"unpackedSize":386568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKIAwCRA9TVsSAnZWagAAQUAP/2D7RLkDINyrbIuwI2Gm\nHdwswN0sbdrmDtzvFjPNpmAClN9JRfPMmKFXWHcJPUIv0+KuA7oC0dY1BRRm\nBXe6g6i1/PgyhXQm57MCG3aTcTEH5v1Sw99TEOT4leMeldOkF7JiXs+0wloE\nfTSoJE6VBKvdQW01VVXAVpR6DK9ybSMIvEXIeetIvljntQhx4kjXcfCF9VRj\nhuhsogHXMaqScr+fLIScZL2zu9QAdZd5UwcUkkn6FVVgU1A9FZtsCgCcjyKZ\nRulOf3yEoxKrclCz42SmSMPPpmHfEw/gU0cXPVmarb6Yo5cJsUHZWH03mKNM\nxHFryagbvYxEX6FMuCS0OITAfdqQHDDGl+1IBRKWc82NK/tFJq4DlxAhGBVF\nggBkO27cep45XkhKwPg5YK8ghJmSq/OI7icYi5lUnzpx5kTLRPFSmzL7P3t6\n00wTqjI7T0MKMhnkYKA2BP35YDilpktLmaftBjAVaALFBqZUZZxks6iuPVw4\ntfTR1dfCBbaRygvUoxx0JdLGFoJgP+dHfyMNVhXTlNzXYonei5Iw2AJmLWex\nsfHBdQMT8y+qWME1Bid2PKTQJGPz01B7zDX2xduVzP2ZGsVEo1zSWF49bUOL\nJPXF6OhSki7Uj1WAI8As7HYDvvIvI1Gg55rizpnwOeD5H9OTf6bwQ/kKFv1z\naAP3\r\n=0Roh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkKpAU1PYpgMOCSM5HTwTRvfxa/NIOU7Y53B4iBNfa8AIgRSE1ODA+qF2rkdaJZmYaIUG8H4thHj7GOzaJHBVosQM="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.3_1596489776152_0.9846751758723056"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.3\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.4":{"name":"@leanup/cli","version":"1.2.0-rc.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"lean":"cli.js","vanilla":"lib/cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.4","@leanup/cli-core-format":"^1.2.0-rc.4","@leanup/cli-core-lint":"^1.2.0-rc.4","@leanup/cli-core-test":"^1.2.0-rc.4","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@rollup/plugin-typescript":"^5.0.2","@types/node":"^14.0.27","rollup":"^2.23.0","rollup-plugin-add-shebang":"0.3.1","rollup-plugin-terser":"^6.1.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.4","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-b+6OqcvkSKOrjF6G5daTFB+/ns2n6j7lhcNeIemG27IyFrUlCGle/wwV+bXrM1Jha/W+M3Ozn1TezBCNSIy2VA==","shasum":"37ed7241ad2d033f7472e9bacea25647b091a07f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.4.tgz","fileCount":58,"unpackedSize":386568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKICRCRA9TVsSAnZWagAA/ZIP/1DI2+NtiX0vKhq8ZZ+0\n3m2/0/C/9SLt+YqLdf65G3kwivbT8u1AEOHvKjztSO6ZSZdTg69mYzNRhSpN\n+x2nUF2bloRzH2IAjvyazUvDUC/IuJLrn7pUSd0UpCjehe6vQxWAZ/eGM6WW\nwMXrCoNlC+y/3AwcPUDAm7avNBr87awx4so1wrVlg8yMoE1WyHPbe0qCLinw\nIYQyUtkJj78Vf0ZNGw+lJx0iA8Ur5msr2D32QAzD3/5h0v/l2kyjZGjA7lJH\nTjFuA/CKa4iWB5jnAJ4e6tLop2oOIKZMB58jgddQV43ubsYt3aQspjW9krXe\nvUFVU5oSE5NFoVuXbmZ2XcjLr9Nky+PbwNVf7d19cEZ9Y493kl0uc2sBxeul\n0TKlItCE3lakYdClujU64N6cz++AmdtFE93pS1lm0loeyWV1iwKgPsN6xwxT\nz1M+0BPCghMfwb4r9qF43ahR+f52a4fan964LVfWWjL9QeZhFtyZqeQ5y2A4\noEJeS9VyDAGZermLaOntR8WFBmQe5Ti3/qEIoSJocgYC9RXisgrbhIGQjF4V\nFKdLyC/GJ60DYK0TSnPQRieOw2WOkDYG5uO/wPO+uBi4oHtuteCZ8kgMQJfl\nsBe3IcMp/aF2Jl2zso+OtG7avDOeKwTlrQCwAKqeZg6bO+Z55A81lWTFfBNt\n2nDF\r\n=v1MR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDikTMkvr0489NqyoipXvKKYc0+FldzJ19mxJC0YwV6igIhAP5HAdCZnrE7weinfk+oknUfkigr2C1VsbNfhAcO9ZaV"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.4_1596489873282_0.4073410253289491"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.4\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.5":{"name":"@leanup/cli","version":"1.2.0-rc.5","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"lean":"cli.js","vanilla":"lib/cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.5","@leanup/cli-core-format":"^1.2.0-rc.5","@leanup/cli-core-lint":"^1.2.0-rc.5","@leanup/cli-core-test":"^1.2.0-rc.5","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@rollup/plugin-typescript":"^5.0.2","@types/node":"^14.0.27","rollup":"^2.23.0","rollup-plugin-add-shebang":"0.3.1","rollup-plugin-terser":"^6.1.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.5","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xW4Fp1e2RqJ/LgZadoroVNjeUIBGGX435nzwiX4a6VzvNeBhqh3pi26wL0wJ7P49daGs7jpEG1xve4H7/cRPcw==","shasum":"5b05576bdcadfb30a9daa68ba56b016f605adb53","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.5.tgz","fileCount":57,"unpackedSize":385110,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKILkCRA9TVsSAnZWagAATYMQAKJ9JPGAIF9cHmiUYUcV\nbCvc8n8Krt/d7/iWwYJENSg2AMfdogRhgh4NNnCRUVSEuu0yWgnytGtBJ7KU\neDlH29F9ffvdqmM4LrkFtzWpeZuugQtpBomcgMRapl1XfoiRcn2H6JoSkBk0\nifjPqJB/3vcFGVD1AJclL5HlrlvOM8wjPrv5nnnWpzdk9VOBxPSiFltTKCvj\nwJy1Wi94RwrycJLZO3pow0rbjXS+4puozB6L56AvRPNTND40YmQ7zqOxNdlX\ni12zQ7w/Lwofcv5sklHakQNacM26WW2plx0C+xjwCvOuXOCinhR1BuGwOjpH\nth8z36B6LgwAT1//PLLkpHeAgcEULSyoLvatvtQsUlmJPxyuoQ27G4o1XJEQ\n8mLWV36gs34MX+875NP3WhCjXNNjUWiki8NLAtOYrf6aREGXAPKnuwJTD00p\nnLaiOLcRqBbw9B80W5on27kaCVSfFLDE9jUfCmfcXTPF7qIAmrFHQxJlzj/x\nrfgAOajoDh+ZqmaAgRFqWYvo1UD34I85oGfhSkXNkZxd1dmUla2vr9iDPsqy\nuQh7p2L7W3SgLSrgSPLYL7KGx/ncdWCqN5sBCZnpt3UwYJ2mKe0cFGxf9o2w\nWKL6VuMUu+kZ8hKU9Mc1oUsRYcmqP8lOmWKXejcEzZIUVXnkQZs1irynfITq\nOc5g\r\n=I+AH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUBWwo6ZbD8+cO8KJtQwrBGgER7y5j6AwIzoN8kTSYzgIhAI15tCbPsTyfJ/zYFVVEdT262e5n5fPMSGDkHkz7oT2R"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.5_1596490468467_0.8867004577765303"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.5\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.6":{"name":"@leanup/cli","version":"1.2.0-rc.6","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"bin":{"lean":"lib/cli.js","vanilla":"lib/cli.js"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.6","@leanup/cli-core-format":"^1.2.0-rc.6","@leanup/cli-core-lint":"^1.2.0-rc.6","@leanup/cli-core-test":"^1.2.0-rc.6","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@rollup/plugin-typescript":"^5.0.2","@types/node":"^14.0.27","rollup":"^2.23.0","rollup-plugin-add-shebang":"0.3.1","rollup-plugin-terser":"^6.1.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.6","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-y06D+5uT5X7YFFazVob49yUQLyqbY0QJZ9Vy9TfgEu8WqFCzBpaWyr9/e6FdbByIkGxcYoXUXeCyy48+i5eCbg==","shasum":"87c5a728f3337e0dd1c35f1246bec43fe3fb2b0c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.6.tgz","fileCount":56,"unpackedSize":375747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKIsJCRA9TVsSAnZWagAAvA0QAIu0PuAPkzui6kvJsMmC\nZyfskxXjTvcJSpcs7j9K7uM1eDDSxlr+5nJ65elE4g1ABCziHTgxYqMxeafg\nRY8YL1KJRjmIUMn2K6pLuPWnyFpAc96gUVop0S+a7+ioj5gJw499Svebzle8\navS2NYycMu2Xu/HKC7LvHBsRq0VsE9myWm6QeFZx3bwN/ykgNyqtPigAEY37\njJUw8va6GVqm5fl+IqIszhhCO9iCSY5gu9eFUd+0IV8/eKO/SJIflHAOI/DO\nQoTf5wNUZqFQMFICK5QNqbsorMm40DrxTqxvfsdTotXTyJ+yU7kUf56YNDyt\n3UzRfsYtbIo6Ft9Ex09suEcfEwPZ/LqG6Bs1qQrSWp2H3jKeNMGFl5g59rvJ\ngLSxLJYcrWx+ei07p+Tw4drzZoc2I2gH/IDzGMqgdvXWpg+NORLsUsPNG4IQ\nK71CF3Km5ZWeLjha+G+QZXLrw45LMRKXXIuNlL5vY3lflXZPGk/iWvXLodkZ\n0Ha7n/P9a8iGMQvRe48TGA8wCUPnHdINzgH2PynJPR0DjXtrtprianOKfrLF\nhXDGS6T/9qC64C8FH5ewzvy//36+XsaLUKqI3bcO3a2SY1LzWcgMfveuuAS/\nBiy22SxEE/yIlVlgZiKQ3wLWFz//Sl1kW8zIrQeiHPV4JJHqB+c3swM6bh3S\n3YZT\r\n=6cm5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCc7Mc5L9hJrQCgHSV/cU/yNyUl2TvAEP6kVDUw4pGzSAIhALBKaOLwKvQwTSm/XVtQEfjOkAcIeD94QlQYH/cmYtF1"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.6_1596492552660_0.3857410798108507"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.6\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.7":{"name":"@leanup/cli","version":"1.2.0-rc.7","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.7","@leanup/cli-core-format":"^1.2.0-rc.7","@leanup/cli-core-lint":"^1.2.0-rc.7","@leanup/cli-core-test":"^1.2.0-rc.7","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.7","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iFBmCO/ke1LQ4YlK3f7nveluslI8NjHeinJpu8F83wAdLT4ssi7LZ3oWSgznOePxZWDhQJXBkGAUXzUaZJMtcw==","shasum":"ac6aa791adfc4670aebdfc6499e64624e52e5230","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.7.tgz","fileCount":48,"unpackedSize":354336,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKO0VCRA9TVsSAnZWagAA68wP/jj7RrMx5a6kI6KS4Z+7\n/CzUbryRx89FbtnIWvvQbubbd8+qb3KJ50HCRNpfPtob3+QmPIZsVFOotJJ7\nZZ1RKbMSx0uCxjt3iJqnVn2Ql1BnbgbuOCIZq/3NuN4IQecKu6rR5JYVDvCW\nLLlTAmKuSmI0BN9F9CFD6rGnmAzaJRIt14pOQQIZIkygFDZr8BTqczJR/gDe\nuaTuMyFSl8GzChfz3TB9fVIUiJDvuZCgPhsOvR3q10/RUTT0yxJwAyCCsZzP\nnH5q0b9Bt6+Bt/JTuLJCFGDWby3EuVKEjcYMoYKky09LW1sjwwua0tJcJFSK\n/EyDXPPrROMYtBb22wE4Tz29twZrHFsoCtzJQAszVaWf8dhWUGNpjrQ1ndv7\nAj/Dd9TwIZn7vqqFQXYB+nRjNct+IO/hBI3rynimUtrdc+Ai3oJQXNnf9jH/\nNgILgLMxtR89QCQimdKiZJWGK8faZuVHDYeEFHEsNVGN9j34qaVC7W+l6h4Q\nKrbu3sVlr+jUp0yUipi9cAZwT8Tnk7ouuR5tKua9yhHl+c0+pUz4d/bmq3qT\n3I/bXwUrCF9kS7naxe+8GOojn8PQIWumSvftpJKtceMyHychgziUNEBjQPbd\nx7mH9K3bRojW/T6sP8Cv7Bw9LG9xOXBMWXjBoznj/7ToPAaVTI9u/i1ZRGLO\nXNCQ\r\n=fx2+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNPSmvJMLOv8n0NdEsgprMGax7bwzK5PTp5ryvRITsuwIhAIvnO3Xox/pe/oEtCRQJ1y80RFgK3I+F1Xd3SWAI2z9L"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.7_1596517653053_0.8979164682898251"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.7\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.8":{"name":"@leanup/cli","version":"1.2.0-rc.8","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.7","@leanup/cli-core-format":"^1.2.0-rc.7","@leanup/cli-core-lint":"^1.2.0-rc.7","@leanup/cli-core-test":"^1.2.0-rc.7","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.8","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-gf6A6fhzWM7HNKgK/uuhh82GYiiYLcrfdwYv5KzZSC8Bfoc+Sy9R7ffuEj+eggOUFO1aZc9tuNKPU7P6thKuhQ==","shasum":"c5c154241c5fd69868421a84e30f83392084e545","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.8.tgz","fileCount":48,"unpackedSize":354321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKPMoCRA9TVsSAnZWagAAVvIQAIDuLz+KO74bF+v/QgsL\nAPA+bDrD7UNeU3ECieDY+szSNoaFkWStcoWqCv5RLCUYA36t4VTZNFxa/cxy\n+kHDvY3HYAmVkm91ZqIIi97pLOvjI8RdByusaXRh7FbuGWzoFe5MCPQ71EWk\nJPERlJsnMoE7nE9wfJwKam3tWxVwy7w/NM7W1o+6CC6AVbPdfeytdj6d+rRc\nhhr7iIYPXrX6PUeBt6zuGNvxI699YPw6FktZlsWW05zErlhw06h/KHooH1cp\nnnFKQXrPWgi/cHAfWuNmIMdl8zzHC/unttHZZxv7phKZqwJ3VZFV+vcY8dk/\nN67t5vVQI1TTIASTPdehOGI06BFuAGElkYThZ4iz9H8QqpEJrAL/3LTxdurc\nTcJqy5Utd3ERu4Jh5E2COlYZ5dTyTi+PNaY6Ohh6GlkzNF5oUBcc7ed9Q0yh\n6/QrVpMxSom20iXJM+B8thkxBf6Ox2mFpiGM//1V7RQR75CQNs/CMpmt/ZVG\nIGn/IlOuL4Ugl5X6XXGPOWIZxrqVWHkQdWOE+PFRlTqEpmO6eXdLENabIcjb\nazig1AGzH9o0DwgOQhAQHw4l1hNBN6aEv7axuliTRoaAru3Q66u3SPllGD9f\neSYQjO9OaGnkyWPO/Bn+nVmE/9JynzWIr543wAgW+1VDhNXQGEs31qgh38Ji\nDMFv\r\n=keaU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCP0hljHQiK+BTb1tbIuLp3b8nNdDWJ/aJVyi+QPpTI5QIhANBE742Qb1lHUmMC28w6MdY+O+8ymU8rnVyEkUtaw3cg"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.8_1596519208116_0.06743117668670218"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.8\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.9":{"name":"@leanup/cli","version":"1.2.0-rc.9","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.7","@leanup/cli-core-format":"^1.2.0-rc.7","@leanup/cli-core-lint":"^1.2.0-rc.7","@leanup/cli-core-test":"^1.2.0-rc.7","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.9","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/sAvyhIShaHpy0Q9tea0AKhWazSDkcd/Y31Zre/rJIJ89hsEHnrweJqwL5HzqgsbHxpnkvDDgEuGXASQ0v3u8Q==","shasum":"b9fda2cd286e174a22cb16a36432ee611578937d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.9.tgz","fileCount":48,"unpackedSize":354365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKPgZCRA9TVsSAnZWagAA2/0P/ipCXlZ0HQ836plDBRuO\n2389tcNgG6AfpgzluduOIG9KJtBy087bOdKwxk13h4QZumcgM1/egcvYWAUi\n4Yz00zzG/J+rdhCqpkDwlTztkYAx2yjfN97Ivkmmssn1WdSr7W7/dU1WB8CI\nD4+W33tf5fkFBv2KoffHDNlc64flbTxZJQhH0rJQqVOSfcKUVw2IK5ocULmX\n4H/m/XloTIktDcMW2dwTATwI+4EwGGV4l0lBzp0EPvJ8Ckw8QzspnwwObMq5\nKq6UsM/NeveZ6fnDEaZ9Z62R2+aAnn3HlrEtL8bOy6mDTXblIyz25kzg/Nme\nMSEzOt/iN2RHc1ZC8QqbROdid07GCMHFXcEV31OWXwy8V1rXbj4EDm5ckvvO\ntaN/XK6ce7SZocbMMJs8X5Fr8bEOnn0902Er06VMpwk5atuEd5qmhGOihhpF\naE2XtC0ZczGDxYb5BF5t8+EtkkvPHuejaMgxpZZY49SkeFOUeTRCOB8XUTpj\nz0px2K1dFk/3qTNROpD6wWyUhGVIKyGW3VFkS/qUA0WwQd8rdjaXDUW6Whgc\nuTQzHZeM+gJrbV7A5P+L1d51cUZu1lWQIZ8IXS5I4i/6uoCXqPz0FZtH9fOA\nKaEusBnjardDnLpDTzjUz0xAjy3tJ6QjrGYx2xYr0RBYsZBwKodsW2ci2ewL\nQNjV\r\n=IFdT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHoSmHMXx69TtC6Oz+D/u5uxZEsY+FT3gts0Wmh/HccHAiEArdSAMY7f6aj7c8fraZUbRjVywjezOVK4yImkumQWFOA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.9_1596520473212_0.40790458614217107"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.9\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.10":{"name":"@leanup/cli","version":"1.2.0-rc.10","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.10","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.10","@leanup/cli-core-test":"^1.2.0-rc.10","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.10","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9SXUUE0tUkh8oCRccdFNGGuJncmC9TixpxtwANLiKf8biWOW2uK83JTk976qEtf++0NsjgHH7DZmffQN2BEp6w==","shasum":"8192771ae8688ce27715fe1dae8bf718743b3f7a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.10.tgz","fileCount":48,"unpackedSize":354370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKQucCRA9TVsSAnZWagAAS/gP/3EjT3Sw5JWrdNks6wVO\nIaWbLXasRouqNWuelrdeT2DMgzu8XvDh48Gz0Ecdr15LbDMxim9f0q/+3Nfd\nSrvSoL8gcCc1W3TnHsmKrRxXKNyHKGMGRPRP9/zqFDqNNrmDFvgz1pRToyLv\nNUP42bXkj4M6By4tNzKoiRxGQw3ncDklFC+68APPu+1zS+/fmEL9xzQ/3HjE\naJHtFk910gDUCczheflS4s0RawR5yUIJJCRungljibOHQXFje6J+K9GT604Y\nkjO8XBMjuFeCgNFF381+ASOCZyYe5DJn61d4ioqVBl4434buOQML6H3Eoont\nGepUMTRkd+7fdmgeG13L5TntHj44HrV4/kDfLmJB9mMbf/+Z0+16660kyn3u\nOOC5d6Uh+Y5z2waN1NrI0PfqkF4Rg0r22baA6EViYtK9lAKTz6SaMPcdUum3\n4f+JkpkHbmHzW/JpGQ7oATA2lUGLvO4rxJmTL01mF6+B+yvL2E7koLfBR2FA\nJ1uqr2mm2a52kWe6/Gif/E18uPR+5jXt0+UVFci1kevsBPysy4iemqrX92OW\nj9/lNAmW3cL4oFECGQ9TStF9pC61i7ir5zYBYMVM8mOOra5JyfZVf5/piwdE\nSv0cn+OhZUN6Xnl3MMwBz1ffhyLfGsdPrHwOZKRM1brFlycJ87WI33TRnbj9\nz97j\r\n=apZV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCHxdrtQKrOwglqxi4vjmqxoU3WjCOHsPTBaVza2M6+ywCIQCV1SsG6Gj8qjyKxBUiCGpDxgXxPrmpxAjwUlWD0cYC7A=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.10_1596525468490_0.786752554830253"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.10\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.11":{"name":"@leanup/cli","version":"1.2.0-rc.11","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.10","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.10","@leanup/cli-core-test":"^1.2.0-rc.10","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.11","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-oimuavkmb++/FEpN/+G1UgxpV84P/cBbGuFFaQzVr0UYG6PPWm8ZI1NIdXmagnwf7YaxtbMJCVbCbyZVCHBH4w==","shasum":"46d51cb839eedf2e227dae6a3bd481ebdea71183","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.11.tgz","fileCount":48,"unpackedSize":354354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKRJJCRA9TVsSAnZWagAA394P/2v01KAy5aBHb2GhGQqh\n5BKLrnTc63/YtzGzTH7XCY5UhabVehjj67VIKLGZ4K/TlQpSSf67pBGRc/8X\nl0+GGt7+hc8bnQ4WCyXexlV6ZNwU7Qdp841BsRj3y/z6CdyiVNJkCIUYa/2f\nXQPVMs1gw9moNB8ffhBWfNxijAdjJ44PQY42Myuo48ISY2RdqbhryvcMq+pN\nprYWToFBYIqkkbfYMOWiNABPCvxkEy0kgeWgrQ4OBChX144EZMr5enqyHhvi\nP6rntumUs7+q5hIoaWAks/RoD7TsqpIzYpLEjRAGTzi+PH/+VIbe/4Rj9PMK\nsHhtH2p4E8xme4ZTyc/8oEupZ+Ikc1lmxx4R/fLg9r2399HYyJvHWWC87DyW\nHHx51/QWvWb3A3nmJ7ckWi6iJo8ztlueIadqR5nXa92unWrh/Rg4faE8+bKe\njzvL736AeVLeSuJZAYW7P41WAAztDrHzXak9xDiAQQ/oWOsHnRLo5ZV5Scle\nB6r4rnnaW7+7W8QHIO80xtdB4NIY1Sy5ZOS3EhFVRklhjK9KWK8MQpExhZgi\nplZW2dMEnNfs11N7wpchGM2LQUwvIVfv+joLkU3faj2NSiGWRx9FHE/YNoz9\nfsU80NiWR2btFa2FEhYlj71qASANLU4NVBseOYYZgVhYkUQpIJg9b1pgp6sJ\nRhBH\r\n=jHXx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDf7cko8yMWkaAv/uOyn9jdjoPKnQwAL9Rk95zRyKYrYgIgArdozFvIRmE870cjongpx1WOtzWSp0TmQCJyDKcbdZ4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.11_1596527177230_0.1744661621462429"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.11\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.12":{"name":"@leanup/cli","version":"1.2.0-rc.12","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.10","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.10","@leanup/cli-core-test":"^1.2.0-rc.10","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.12","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pAUl5fsERBJTlonLYAhczDD7YbpGYUnj3nTm8Cfdgnwr4daqlQXHaLrsTa5QQUdsU+cSQ5fF78aBjTvmlexJ3g==","shasum":"6c5673d2c71e1afa3583cd4b352a5ca53cbcc658","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.12.tgz","fileCount":48,"unpackedSize":354475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKRf4CRA9TVsSAnZWagAAJfQP/Rmre607sK1Y48N546LA\nuvDq8qjX6WOLxc6K6QiIXUBnIdiwasFCN8KaHcz8dvuyb1Tv2wGUef9R/wHY\nKGNhlkheEbHUg5MVuw+kQkivihS5l2gDlWEny27Y8P86BCiNVFg2fm20Ap2m\nX1qDcl30/duLWWo+7AiwZeedoA0OX181D0yyvyu8NNjbLExzHM5JBjeScH55\nau4kC4Lc6LZennBukb9BGwUWFstS6umoj5KlegpIbxnk+XjLGmCVJLpbRPUZ\nhw5NWwYFSds7nzjvnYKPGr1Qey/7anYtQTwk5XX/FYEsPoN1SJjDLtI02qag\neh/5n/ldxGq+Se116u1x0UgQDz2VGUdwcXPGSGngqshary7XvyWw//9A7n/L\noSEhR+v8EB4SugRaDWuYji1qdsITVZCs4J2JETNJfT8XsmCfsEnyXSJuWqZC\nxSw1wDSCNHtEBf1UTH6MLXn1j4mEY2daeK6p5vlCmmN0t1utl/lieeGFD65P\ngtirvMGxBh3DG5cGZWXSoOo/vyfU1okaFdbuYullp/Rl49Kt6ockp8y1EKw2\ney8MgNG2cPNvORzE5ucCPrkn/RNEFyT7koOZYOX8jOQCux+cNjifmJwQo15D\nV4xs06P/7MpgXbeVw6M7hcqjRS1qvMxG6gT9xlBeVJxCMVX4SDLnW7wQUeHM\nG9jj\r\n=OX0u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHKrYD6kDO+dPgkc5HD61GJ2gsd68DAAhpJQFhm8MqQ3AiEArrGKFHgaw7UAY2rkLdn7QJwakDepyzM5oKtKDNdXBTE="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.12_1596528631347_0.6737102373446102"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.12\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.13":{"name":"@leanup/cli","version":"1.2.0-rc.13","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.10","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.10","@leanup/cli-core-test":"^1.2.0-rc.10","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.13","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-49P94cXhDfgKw83872grc1OhMziHcCWEcPrdpLpUyYT/Q3EEzaCTER781R8Z3chKdumlBs/g+8X3NK/ISN/SDA==","shasum":"e432f6c4c419a24d8955a3a802e72eff8154534d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.13.tgz","fileCount":48,"unpackedSize":354475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKR+KCRA9TVsSAnZWagAAxTMP/j38YqNiZR2xytdYLLKR\nYvLJZAaeKCGm6DlUe0IajnQpA2atfak3v3AAFldlvQVEjEEzt8NmMCXKHQW+\nCXongy0wXWOv0NfGUsoTSrqiGlEe02EbGE1Rpu1s698cphTp4xRcd1pGJOlv\nXnR7Ao3ZkLjshY2wHObZhc7tuPnO15rLWspAbQTWuGuB9W778CjHDnMWOduL\n1zkJOiRZhHqV6ZYETH0Qx02qQh4Dol9bl8bFv9yXqaICunzElH1sdJ01r0A0\nYwvFM9wYbm5StI856Nm1JvDvz+dkTgw4MwQgSQZARMwAykH4zA5pQiRVqAE1\nX2ELNCgzRkzTYnNk5MrkFvr/ZF76lavtGVKEoHbdcGs2YurgF09VeNG1b8ey\nCQor2/9cnxkexvyWBwXJbalx2YWUPT+Z9RQ7bArNPIozMO2TqYldnspwiaYE\ndnXJQuUsF4P1I9fdL0PIeDFofoGrIwhzd3kFyVdKKTm/mLb/h84OKqM1s5Mi\nK50UxzEZ0mcyguezOMDzKyFqZef30NuAHdBJrS1WxRmyXTlGjP4VATHWSGzI\nynSIyzKVfKi+aEMRsYfGYZIbG8DvsajvCLkREP7qKNP00L9m4a8HrW5FjyJo\nkE/4khHLwBnP7jDluz/OBq+b0szvLWHa6dGWQMB4Y2xKcKyWOYtGD4i/Hfc9\n/FMw\r\n=K5sQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHMT64JBN8XaXaQDVKoeFMbUFZud7MIfUYNojdflZmwgIhANamL/+QKy8WgZxQw0soLkHA0iVG+NQj49UAavxfuZG8"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.13_1596530569744_0.9375281513597225"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.13\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.15":{"name":"@leanup/cli","version":"1.2.0-rc.15","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.10","@leanup/cli-core-test":"^1.2.0-rc.10","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.15","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9l7I4V3X8Gz/qrh+eRAP2HjCV6/A5fFN58ooXZG8FxzmImkYu1q+gdxZChEuo/3fujnOa5vkZpSQFYRFgMj8ug==","shasum":"17b982a6b77f54e0acdac09e570b2e4f7a569051","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.15.tgz","fileCount":48,"unpackedSize":354506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKcGPCRA9TVsSAnZWagAAN5gP/R1zqRQJ0uuzdi3WNm6g\ngXoU13MWSbT9yOe4kyrVDAKpNl3bgLH/YOUdICPmCZrUGxSoWtSDB81BfT5d\nbcmaYJJ4EcqhAnAqACwQtmmc2tjUNW4YKXrPFz9kzCp0/5U1AsZL2hmlY11F\nFb54jolMa+ImGYbUPsAXvPujfwEI8/YXk4NXaGa89mb7yIXFwrRXq6q0tssU\nmlsGLhpXdUHAU8V7IYEnxHmJyy/KCvbl9XBTSJE7eetcXv/ns00lctzuydeD\nEmrN8eaOknwp45ipZHyjB9dS9oQqN6+96CdZiotE4N4s/9hNQYnb7DeyTG0M\nSZZtZ/hGwOztJ5978sKfsWmDvA+59nt5bd4r7g7B2GE1YLCxqYv1NRGzoOzv\nC+f88VDOPa6E9Cf+VNhY4VbHgfYQVzH27+xDoIHCsHtkIkk37jCm8a2Qwl2F\nGuzaX+BCOGWRvXmZnXYvSZ2xcOSF90jweS+v0PuVsIor9KXoiOZykzUu9hsF\nOCCtB0NjnPiMEzpsofHWZ3UXYnwmdkW+STI04oFy9MTRYCF/F2oqCWmGK34c\nTIOEarVMIUdOnXs9MZKEkcDSei+EDrIk/aT5eBgEMiNekmwP4O06UEPIrtC+\nETrreaHD4i9H9OcSOOoyf1NFyrz83E+EFe2pDJpUCQPD2fBzFE20Ff2oMusC\nFbe6\r\n=VOgl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDo9V50Z55o5VdVKdtW7lIVu6yqYWDoFjh6pjQSoNVIBAiBGeiPuhIpAWNODC2kPDiYPvrK7SNB5hBUH3aQXDjI2gw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.15_1596572046977_0.10618606508355466"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.15\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.16":{"name":"@leanup/cli","version":"1.2.0-rc.16","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.10","@leanup/cli-core-test":"^1.2.0-rc.16","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.16","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-jMzMYON68tpY+CW9mhoY0Fbn2BGNWkC6gatOHhkV8Nm2t+r2Go5GhDAuVdEbdcW9CPCTojYOCZiw7S4ND1RekA==","shasum":"2a76f61574b63aeb6cffc1b62c0a70fa30a39dea","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.16.tgz","fileCount":48,"unpackedSize":354971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKc9vCRA9TVsSAnZWagAAH0kP+gPGduOYMw7zzV6uWP7G\nQfjbL81zG2uVkP/YojAv2xfj7gfoanjcoeLkQwBRrvkPA2L659fIG2Nibi32\nwR/IXBpE/GzedRmd+mIQoxi5qok6sxPR2P+AarIJ82IqCfo+lP5M5jfWjuYZ\niITowPiNG+/8X6jmu38Urg0XJoDgvN1tnoF0lxlE4FPIrVqUssKVR1rzoFWY\nNHJABi7/hl0cUKhLqcrm7fYFyLNPhA2jJwJOAockCAZC3Ua6UUuqbq7ox+mZ\nE6SDT9bELNGD1E9q1yjEYPEsYnGMyFrEEcMXCW2XqBzIS68OPOJ7hhYHCBVe\na9t9TUHCOfKhJqTFyTWqL6psqXR/PUSqo/c2qmLKiKNCRSE0M59/mjH95HPr\n8HSb1aRNA17MG2n7llqGUu1AKjHgMnXOL0Ezrud2jNQCz26CWml6H7jIRr92\nV6SaXwAioeFcxMKbNmkN/Qd7n1/mUxF6TDnIx/kaJo5DLgtt1gy0e1yaTnrE\nTR7iFoqEJasZCYjnMDpab++RIDzSoITaKNfTyv+PKz5zcsorbwDR/92KzPsY\nmn9BuaB/2uQJmvr7S5JCYAnyp/sSMZOdA3GeWqDMwfYWdPwrMzNI4ZE/iL/5\nqrwQds914SrKQaKMF/8x+NWQnVGuU4QRpubkSDduYl95+sRjgTfTjEpq7U/n\nD37w\r\n=+hrx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYhVtVtK/AMIeoBEbxLKTSIEByuvzvxNdGWsAWDFv27AiEAm/eBNNh3XWe/XcErIwl7BsbVajznSitnYnAk/N73+U8="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.16_1596575598885_0.6068064952191776"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.16\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.17":{"name":"@leanup/cli","version":"1.2.0-rc.17","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.0","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.10","@leanup/cli-core-test":"^1.2.0-rc.16","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.17","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-sJ96wpB9TfR3bA1rAB6HAJSnXWrUi2idyssaR8aNYleZTN5RHj4oqVXZ0uBpAn7eLz+buqtBP4HI93Mkfo/a6Q==","shasum":"5da3c526300e8e352196c1245e8ba084ac1e0d22","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.17.tgz","fileCount":48,"unpackedSize":355000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKdZXCRA9TVsSAnZWagAA22EP/136PfnPlDx4pVFu8aig\nvAYFpHMOHwqKe/Og1vq7eYTMjfHPHktDwt6tQCbBZnUZqrSdMhCAXrYze/8M\nT1DSDbft35lPImVMHCzy3b21kIc9YhoF19qRMd2jP8sEnIeA4SRCAh9YFpiR\n+7uftAO+evuakQqJyrLUed7tq2lthqIBM2vPRdr/fyd5UvHsyBKQPDLbL9vg\ng1jks9a0jKVaFFF+Fij+Y8N8iFnTCVTkWr8bxPkay5I628ANcihSnItYr0og\nKGIsxAjYteqzMkl0GI/Wm52yxP3vGb/+4UOE9wj0uP7HoipBwjgdJbWBjs2n\nI/MKTDBGRERVNU3Nu9UC29ql1usXWfOJ+HoVFzPZyPCZ2DR4VVIqqEIQ0AzR\nrHapwxvjjaqyMdKdXFw+oya0zwMBm9n3lHBD+A7ZGLV6QOPPoVtn/mwUAjzJ\nDH3DmSyXnNZS7BodfNmwvDOv7BfG58jKIfzeV24F9efFBb9ZQ554nEiI4X4O\ngQ68dLfK81+gCWULoMMSDwOYlHSAghs/xv+Jv0UPF4UW33b+9CJOGvlhFTFV\nVR3+wZexS4JUCeA7FtcEuGTixk7yXR7ZandbruflqVJkg2a/wU/+PF9Q7iKk\nZbfgcWnG6XPm056sWSpuPRXcArz04fz4qT0lRogUNtOqIpx2IWBo0EBedPcx\n3H+f\r\n=Ozbt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxyvZLQhqG4zNlD1GFs5cx0/2RghPZKnVsQs/QSXRxQAIhAKxoBPZe8oN1lUMtxzPgaqfLVS0pEsxp7xlZV/G6BW3+"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.17_1596577366499_0.8478292286854945"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.17\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.20":{"name":"@leanup/cli","version":"1.2.0-rc.20","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.10","@leanup/cli-core-test":"^1.2.0-rc.16","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️    | ready                      |\n| [Webpack]        |     Bundler      |   ✔️    | ready                      |\n| [TypeScript]     |     Language     |   ✔️    | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️    | ready                      |\n| [Chai]           |    Assertion     |   ✔️    | ready                      |\n| [Sinon]          |     Mocking      |   ✔️    | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️    | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️    | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️    | ready                      |\n| [Allsure]        |      Report      |   ✔️    | ready                      |\n| [Cucumber]       |       BDD        |   ✔️    | ready                      |\n| [robotframework] |       BDD        |   ⌛    | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛    | upcoming                   |\n| [GraphQL]        |       API        |   ✔️    | ready                      |\n| [Workbox]        |       PWA        |   ✔️    | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️    | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️    | proved                     |\n| [Material]       | Material Design  |   ✔️    | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️    | proved                     |\n| [Less]           |       CSS        |   ✔️    | proved                     |\n| [Sass]           |       CSS        |   ✔️    | proved                     |\n| [Webhint]        |     Webhint      |   ✔️    | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌    | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌    | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.20","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-bw1uhVWyw69ORSM3kJh1vXCEohwDs0XXqH8CWo8joLNUeb0/361axr2dWDQYEYP/fms/Tg2RAvh6tiN3yNQG8Q==","shasum":"4ec83c1a3e90cb5cc9014085c0534c87fbd3b065","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.20.tgz","fileCount":48,"unpackedSize":354830,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK4kgCRA9TVsSAnZWagAA/KQQAJfUeCrcqt/xRwV9wKo6\nWjGVfLEj6sVZq/CgFRIKk9NdLWq3NNiBOx5wavp/GPa7sCTqolC/47/u4BjJ\nLVBY3ax7aaqYEd2l1OhmXWRRkcEg3awRdH57QZMkfPkk7wXU3YiqIMGFJpIU\n+s86d3TvYc9qaoI746rjjAu5nA7dBbQ6EQ1GjpJtp1LbEmZ2cIBgRy3weYEJ\nMGHR7tkzcRCTD4dcchZELxRSBrw2YAzE1+PthNzR/XhM2nfSGSRHjFPunzm6\n7wHYTabn7+A6nDzrHvdsFvKLpbicoaWn2bmsaHulHggmfCI4o3GiTfnFkVpu\nhTEkSVIT3evVKNIKeJC/gCmgfiH0sxa9aKCN0sMspy5OheQNbe/R2G74LaZX\nnad7PPjgHO9mKfflaeP6lBPRtwWjyO4PbRt4Ubmo2xh85h9PQ/4/gHxGnfB1\ntLWqy1sCJzQ4fQJeUHxBA98X3TLv5rLDiKZihD4KHk0vFLHpXLCDXV8pnb+B\n8YZplCF6bGcqu3QFp8gYIx7STJ7Fw2nfkGYhlklREYmAXLgvHAshVovsrMGo\n/M4XST516hgqkNkMd/y53qlLJQn1I4gJUmSeapfdwEpP735R2uIW+1ZLzgJq\nxUVInm/LLHNL2xFVgVEtipaQ/AcvO38vaRND64ewoL6rDOKcBT5NsHPADGfn\nomK9\r\n=B+2Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeMa+bSpYrH45xr9h8Y+M9/bNUg7gWpFqhYgZqIzuT0wIhAJ0xa3i/Mu4FWB0weCeCHzO3NShWt6RJFkssZ6A92tQd"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.20_1596688671901_0.8296618638282909"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.20\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.21":{"name":"@leanup/cli","version":"1.2.0-rc.21","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.10","@leanup/cli-core-test":"^1.2.0-rc.16","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.0","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.21","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-l0pvTCZDWqp7jaiaIcRSgmQ5tSGIRa5DHzH7QyD4IAYn4QsSQaEvYZRwTyji5ciAqOkOhUJH7J7m3FpXjyY/FA==","shasum":"3975c7d032a740f80a4c98bfeee8fe044be6937a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.21.tgz","fileCount":48,"unpackedSize":355035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK4oqCRA9TVsSAnZWagAA/3kP+wWaBMyIvCSUgg+6RpkO\nbt5N1O+eOETB6m7gDZEpgjOoMfzwrWESBw7yBF5j9ijeRSmkh/nzTuUAJAL8\n7snovXc8unEWJgMQ6oLAwJ/mgV/+Y3Wq5yOKVyw5Syv8ZU6rYhwuKoeBKtQA\nbEHIWCwYptePDOA2Lp2WUGIcbKBjaL2o+pZoUNQUhJp53n9eQp/Mf6041wd/\nt84kD6BtHLpwHckIITA/3Ct3H+Y7Sw3BIEqCzfa3AzdbTAM4p8zVeg82OA9K\nGuycl/5KJSiNm/O+A8UjCXrm4NugdP41pT9l9Kmc6IxH6m/z6zEWpR4GStlR\n5UmNhNmYDb6iBitdwpS/RpUHd/fTL/ncrAP2JixKVGEKXvPZ6WCJVOqx9uXd\nj+dikAJpTenynwRxBlPPufQtwiSZ/XLx71bF+2s/FXPbHPBdBcwW2/kH9rZj\n2x9zNmiAA+vGDA2REtyz7AF2XNxAF4oURy6+X+o3GJzCjZ7dLaOaewyOeYv8\nrNVTXxB2LUfY98t6gi9BiiTNR30QgN/YkTu/whErK9kj0tr0G4hm3nOquV74\nUcYpYHu6Tc+9+gGAQRIiWX6h6PQxJSEk+6cbpI4B1vOAneklLBeVJJ/ZZ/F2\nT7KyY9dHtu1mg7U874OLWIfGZ2fGfa4LiZI2rFNEaPani+rFnc1dNnaVU+mE\n6AvO\r\n=/WaM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAmTAa/WJTqxZ/bm8RXoOTiaTAw4lXMmTKatHz2/8MslAiAqOWKP2kD3IrmFXHxpGzyde7KPbqSj/YcHm16IX+pt2w=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.21_1596688937701_0.3997505197261533"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.21\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.22":{"name":"@leanup/cli","version":"1.2.0-rc.22","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.22","@leanup/cli-core-test":"^1.2.0-rc.22","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.22","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TZn4os4Z4nwtD3gTY2UX64hDu7Lbvk6uVllu6HnY0FNxstovPYBT6F+VkvG5OaX/tQrpgGiospkoWNTSougCNg==","shasum":"6628888020121724b81ffc925dcce91546225bc1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.22.tgz","fileCount":48,"unpackedSize":355035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfL9FYCRA9TVsSAnZWagAAFegQAIOBEsru0vbK9yUIuCZ2\nVZyKOzIszfTXnYQz4fVpdS0PQLeAfuxpn22DR6oAMxsXT0ePA6YkbApObMjW\n16ZMcsouxvCj4nVkZ0cnwVMMxpfO32MjZ+OwiqFHyTzNl8vbkiOy8a6moJ7d\ndhBXtd8GiWhQF3x1saiIm2ppGd1XOsdTFpn+FzdEluC2/IvVgi6Lk8iJnhzf\ng61lJsxhus/3blBLdv55fxIkXcmiaM++yrJCpfF6dbDQ6o5dc1rDqi9WmPxF\nnpYKGLNmnDHeEk5z8dm62idlHCZVx4cCikTdCmw84z/igZFRi5lE5CpuLL9r\nZyRVWGhGKlUkwi17JzEO5FiTvNCIN9mlTez0p9Rumek2PK/q168wpT2ouCu6\nEliKRT2Be/bG0NHJ9lAowaMi3ym5f357b1G0qa6T05D9yL6rq0/jMxqaGCEE\ngvUsZgF215vQjw14EzEbbiUfX/4roZgI7SIh+JENKrtGIdPK+k3QwaQuY+Ak\nyvxmV+b5W9m05Ip9lbsWygVQEs4R4nR6PiCwuURBAh+ellOSc9tUIN0RR+KT\nVaaXmAT1KUTUoME1bA43RsyRhWb3citmukoof5fELy9ZtEL6VWc+IdHFOUeK\nAo+TML3QZD4iDNU1WCGfDN3RIOwrW8NY2nS3njhKqA1+SzntedHaNiP9JRdC\nBiue\r\n=163G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJQfGgqmkNHNi0wVn8fyGOJPxxA7koXXs+JL4IvgGmqgIhAJ8QXC9FsJnLZtMJnvPRrGuyhBhvPbrHaH2j45y9PUmI"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.22_1596969303759_0.6200002873521988"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.22\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.23":{"name":"@leanup/cli","version":"1.2.0-rc.23","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.23","@leanup/cli-core-test":"^1.2.0-rc.23","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.9.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.23","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Z6VO/TEciZPPzuxdidZ22F4KWkhHdYHX2rU/OcF7fH+GqQOP3WDZJjoc9w0ax2Aa4RGQmGrMfa5cUgyVXcqQlg==","shasum":"f1ee1764e557bd6e5cc26fe359e768889c75f82b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.23.tgz","fileCount":48,"unpackedSize":355035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMspSCRA9TVsSAnZWagAAQYQP/A4NVqStXJ5eMN2U1Pqd\n86v1sRADrOkb6nIwMKqtPWcjl7ujfPooofIK7ZmM+3pcg7s3q4XQEx+xzK/s\nN+5YzaZxsovgcvxsGAZ5r0AghWbe4tlDfIuOu1ixzK2NqZDejzDLfsiW7bc9\nLfrpPZNtP60lXZN5IlVe1/tDa2ijUdQECXu7RM2om8O+cnDxA5VWshIlnt19\n6ERuUIR0slRJA2yoZHb5+GFZzRcWv80/CtSdNYsZW9QvmzHStoHUJJzt8181\nI1uiiKlobsb5J6LqPPnFBKuYWR+oUXiz9FMp1xGXvyxDkGjCQgrDFkFvBUpr\nYniDFQuo6aYBVvF5gmNiU1OZzkBXWdpbHU/bTBql16Ghq9QiY6UHvI6ALbSb\nRgU+k8HjPYsWmmMt2kTCo9Jy2/IrnBR89zwo3jTjA/uEeXNWkuT1wy4kpxnt\n33DUx8pyR9jajupsSp6rbJqioJAaj50kGsSfiCV6iPPuBk0U3KVaE+mRgz4M\n0Jm1fJVx4eiRTs+ilNIALGqGGCxCoRJyjts/u2ni9kZ6p96aswBrkdLpcTLC\nw112LMXpv919aqgJWUjfkRTOWT6+Wx6nYrnyWeaaw5WvY1BXAxhhZGa665Bq\nXbYLa6M4+h7KyhTOlukQI2BPihr7qEWLyMK+hG8sbfvc8mJwa0Ufvzun37VZ\no69f\r\n=5jCx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgmToeWGWKilzTbv8i//8ctAjGa4XY6ju7WokSzyAS4gIgfOEyOWgG97Z+ZvUHIsmNgkJqh6cih1otvB+pKWjEhcs="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.23_1597164114005_0.22706066222488408"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.23\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.25":{"name":"@leanup/cli","version":"1.2.0-rc.25","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.23","@leanup/cli-core-test":"^1.2.0-rc.25","@types/node":"^14.0.24","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.0.27","terser":"^5.0.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.25","_nodeVersion":"14.4.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lW3eJNwSYsrVoB4HPH68fDa/MMg7fl4pVO1CF6Ocv6bBulStE7XyFdjJ7BXoX9XeF+URFlXcTNK8W1togCga5g==","shasum":"b5a3ec42f62d724047d2c1cfc81856149f4620ea","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.25.tgz","fileCount":48,"unpackedSize":355036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNFBVCRA9TVsSAnZWagAA9oUP/3bXyzTt9n0C7ndpHX9a\nLaVxgaszJa9MG/wvNFxuTHG9i1yC8wJPDLgtkFjcMgV/Pv1xLU5L8fDrxtT9\n5IdqHxzQggR9/gBvQGZYtrvoIEqw3/glrexfyuG/6MoMpEpIQVEtTePUKE3T\niLRzQAWoZCzjkQgelnrdjmjqFYCzkaXefL/qhthk2BAbRjAXnLF8CIk80FKn\n2kW3bwa20HQQSGwqXL94NwxRhQyJXtNxM95gnZeBAboGNxJzFsqnX6+E2uHC\n6vO/JAnO4Vu3DGpf5IFeiFi1nF+VTlqpv6kxtBep7JDSOfMJg7VEoQi5mbJt\nMgH5X8tr5Mf9SFxVP0WieIi8DvxWeJeSZuuu0pXE96V1GteZUQ7nyAfuCjmG\nBZMV92NLupFLZ1oYvUrj5reoztos30jXL0ud/Gf4eVuS/ixNSTPw/27oy9hH\nMhcFLarR5MF0QS6pH9lH7Ql/qX1jcnlvE1sbbRjTPAeDjr3A9G/3qH5sXQsp\nVHjqbhxcWarFkHp5SA1msjjrUxuZjP6KNxBJhBIVyBWdxhSIA626Jm9VyILI\nKf7umv2u7kUvGEK10RayHppOqsNJRs90Rprwkw7rFuGycO81jeeQWiVX7jFz\n7R8KlI7b4W4zDrGJxlUfKtrmxCn5LAAoUKVokJmekB0QJ3oWAAD5RVqhj8Rw\n8DyF\r\n=69ES\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCLNzAr1T9SckdS5WipPWGdN1kuDAsFfbUoCO2vwq4fwIgAyJCFTM2EvCoUHVJU5gTj/fV09Q+ayRluKap9dAT2Fo="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.25_1597263957394_0.7278879197835453"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.25\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.27":{"name":"@leanup/cli","version":"1.2.0-rc.27","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.27","@leanup/cli-core-test":"^1.2.0-rc.27","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.2.0-rc.27","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-phP4C1XUdaudQ2Kv8MkkS7SbVq6rsFZ0FbGGpmmB+mIXhfmrcRiO3mdIV13q5nxpdzNy2SF0bWNTgb5ceRwc9A==","shasum":"3ded1767db3d7da6d3b8b0a73923cdde713923b4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.27.tgz","fileCount":48,"unpackedSize":355004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPKw6CRA9TVsSAnZWagAAU6QP/RudQku8K+CRr9dH/Rf8\nl88Z1io8uOL6vprh4nPJMsp/Rrd0aG+JMByLQ1big4j1YeI5XSR5Ave5dZBi\n2ModroYnb4LnHFI7xTEUD863S8t/LDFjPfW5Bh0mCZ1Arb0CtBpZY3lwQXvR\nWJkUyRpEA9gs63zv+eGv/P8pdKk0wnv6KTKMHitQ8rjwqIkaNKpAO5ZW79E5\n8WN0w7a9Zo/eA/lgle64BBgIJZAOOxTmDFNR9VHIQfvr2owFYwjpkIapjKsP\nguhAOhtg+lf9/CudwJIH/msnFvOZtK07dAsa49Du0XM6rts5l6c2WOlEPzaC\nGcAln1Y7U2SXCBmq7Mlm7UpYAlyftI7Dvi29hVu6ofo25RPOzHVWL3wBbCKI\nIbcsXu3zxYNV/CuMvLC36s+mdhM7T6DJMqh21EJyPqVIiMdSzxte7agdkQ/f\nquUsN56KPaaPNVE0YR6swbCSkZgt/IlvfW9QFoKbY7a9UsLHn8maShaUDDkm\nOPasQOjMBvccUiMn3iUILoctD4Wue7gq8RGqJ/Sqzm34SMUfMOEHK7QMI+Ft\nnSC62RMkamjCFUqJk+JpQNnfiSU3y0v28kFEEYqtNSPsL5D7GtgPg2D8kui4\nMXX5p0dJb4fPIdqWH9EJJxfinD1tlMDMc0Oir8Sk7essXPT8dQmtOGiR0fb9\n13QA\r\n=84GC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6Fgo7oaPnlRzYV+9xaUWNwURsGcRCR+JdpfyySXOsAwIgEoOvLvpc+8rKbXcVjiDOjhNNcXxqdtQOfrEGLgr1f9s="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.27_1597811769599_0.5360386548232128"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.27\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.30":{"name":"@leanup/cli","version":"1.2.0-rc.30","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.27","@leanup/cli-core-test":"^1.2.0-rc.27","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.2.0-rc.30","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-yZs0XFIPdkGE43vC2cSr+J02IMl88rf1qVpQHQ0qJmkh2jtbjCXo4zZITxQ5g1xsb8m/xZs1X0vuHvjPF8seuA==","shasum":"b15757d23f265afd4f0ed4e0c420ebbcf3f703c0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.30.tgz","fileCount":48,"unpackedSize":355004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPe4TCRA9TVsSAnZWagAAfBwP/2c3a95ZrHqlCo79icGU\nuxXPAbm9bVVFq02i51+SruEyXngEVGJhDtbfhNGUij8Bte5ABKfMv4viSjif\nG9w34mfX1bONHJAYbi/Uq2AZnjHNXjeV8za0Uhu1m+YXP22NvVHe8SIBDwlg\n3AUPgQvv7HtHc5+yxVEEaXAZBWI8eUqjBTLLaK1LV9vH/uyAVZcwbAVdAPr1\nl+xxcA1jyCHIGeWZi1dzMylxD9uk0BpiywUVszd5EVaAO7nyLF3x4puHJ4Gf\ngA0zkP+Dlvjr9En3WGDmMqflz/zXzGndSRKmk60w3DVtW4f70lCnm/w1b3KY\n9/v9NM9Dg8yhPLzPrZrAFN9bv35HVUq9jRmQHmUyu7yMF7xT++tlNTsUgq0V\nDQWPtgo7ggalQ3VEUg4SvNv7QO5HwGVLyIwYHciSlN/9DEeHGMH6Y/t6q+Jx\nKNR3EaNO5PUylBaioy18eqjkO+CjBrhNLANLQ1YXm0hgFjia/VCpqimyL1Th\nr+zDsk+qyPSP2u4ykpCLj2sgF89me9M4NSXyhmWEvheKRiOJ4X8VpSpz217x\nO3CxyQcZNsggb90liHCLyOPQhWaj9PxI5v5BTWcLKqquhY/fsx8YRKyqL2v+\nuoQO392WNJC4BDkRu0ECbtTD9loOnzAFrOKYtonSTG+NR6FmCdRI9XSr6euP\n5s9h\r\n=c0rH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+Qk2R9hKZ2H5QzWMwP9KpELxz1fsJRPrMxsbhuUdyUgIhAP35GCUuVBaik7xtzl8J4KaQB28HRkd9cGGaCYPgoHNY"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.30_1597894162687_0.27248801361320374"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.30\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.31":{"name":"@leanup/cli","version":"1.2.0-rc.31","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"ISC","repository":{"type":"git","url":"git+https://github.com/martinoppitz/leanup.git"},"bugs":{"url":"https://github.com/martinoppitz/leanup/issues"},"dependencies":{"@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.2.0-rc.14","@leanup/cli-core-format":"^1.2.0-rc.10","@leanup/cli-core-lint":"^1.2.0-rc.27","@leanup/cli-core-test":"^1.2.0-rc.27","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.0","typescript":"^3.9.7"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.2.0-rc.31","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-ZzR9+ctLDWAoJ9O3nmZ50rvcx/JeyqTSqMBuG+qD1wj/CWkEuf6KqNRRnXadu6FS37xjH/vp36Dwiv+R+P2S0Q==","shasum":"31b3b85020cc822e1b0f96a8e936085f7c8f9e55","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.31.tgz","fileCount":48,"unpackedSize":355168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPfVeCRA9TVsSAnZWagAAHhoP/iATi0wjFHF0rYavT4hM\n2NYQvXCSoK1ggEuTIMmBYcsLGr7tcZ6SZWup3/KJjKDKJvs4msGKuYCGPUy2\nCtFsj0EOSk2hJ1UN7KdzK/fqBbUhTvBKcaXUfv+82xp1oL0KvP02iEYdh+zL\noSqFWnK9PvQcN72rUZQO+fFOfDRGFK+W1/9NibeaS/BmriZp5n52t1VkFazo\nZ2PNIucxbk1nfN2d5jM91tyjhu/BVDz/22+hPun6yu9/VgFLUDg58HUJ9VK0\ndJ8IWpcv7jYIkrIohYfYCGppdS0NIxLvmUOmV/oTdMnTdQ+Na1FhNrGSIFcx\nT3+oUDo6e+U1FYUF0Hg6FlxL0V6EqI+xxmOc/8WGELNT/TkZlGuJE22EiRXO\nvc/eAVPNRZrz9rGf246YeJYtfbDyOVqBOxCK8zDA+ctISmjygUC9YMVw4J/X\n5UBal4DAWkpkzcttoA+uX3jRznYiXOJZuB6CMg2g2A57K8bQvy8OSgV+lE91\nqa5JmL076G9X1xELSd42R21JS09sbbL7UXi0CNaiPG/K8LoIS/5m7u16I0CO\nNraXemxx+y3EG62WECAfBY2ZbJ3pNC9mgSJZQKyogL7o5zscgoZFyvEXX/r2\nC8EL65XMf11wpj1QZhZgGy/pMPklJ5+wAF/TBjOnmMPyhmeIvS9sL9CSpsQQ\n07I4\r\n=x5yL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJ9oYFwH9DoGFgrlqmMqO/jFiChbjmhNrsDZDvdUoyYAiBwnz8g67FWB8OxPIpRFCCbI2clKu8kcozKatdQerp+qg=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.31_1597896030141_0.2917989186216343"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.31\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-beta.0":{"name":"@leanup/cli","version":"1.0.0-beta.0","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"1.0.0-beta.0","@leanup/cli-core-format":"1.0.0-beta.0","@leanup/cli-core-lint":"1.0.0-beta.0","@leanup/cli-core-test":"1.0.0-beta.0","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-beta.0","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-d6rAVJg0SN42xPvGE/oarg3rqcNyC4h0LVdjry0kGF4J9PCt+dy/uCPGuVpQOlMx6kYvZ+uFm+rs2jiXn3xe9w==","shasum":"3f5a7b2d6b891359d5223359b0f0e8471ef9b54f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-beta.0.tgz","fileCount":48,"unpackedSize":355536,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfP0ebCRA9TVsSAnZWagAAOAAP/iYOED9bbRWBVlENPIEW\nhVjst+BmhnVkFaCi1ebUxtLNGha6K3X/go1S9w6eof04yfp5kkirsjJ6FKi0\nitvcEN6OTXq0yjY9hG47a+RnpOHgZy77eIDq3gCzbZUljPrBpQDG0vasFoP3\nqGg/8HRgObK/p6k4o4NPMZJCnxCFKyBmt/hImrVqMD9BJiW+aSUSmhCGGI+C\nC1q1VXGI8rhjx4gdsAL5JhFuZ78OZ1CSw+DTbCU+0zmD7U9jQl7EKmNVUPGX\nHytHd2EwwjDvOGYEsJx+oai2whWnR8vb5XETIe9B4mC+RjpIefp6Z8FyPsih\n8dGVwUhUNJ2aVP23JxsEXysmly36zSpIQL/4FgjdUjfS+ipYdo7N7ZPsuf7p\nsMtDhnbtIbMpDrANIQ2Qebu6gqJcTD874ULM5EYe/UN7ZAQiJ3aHtIF8DDZR\n3YF8GNMI+Hs8SnzUs8iodZWOpfW0WwYmiW1sPvE5B64jKn9wNwdmKe7noxZi\n9CA8yas6QYyH+OQJ32DYnLNMbQuV1WTV/UYE9scaPA9xY+WZS9xeU2DSCzpn\n/OnOp9HUmvPEF7vwyeUAwRyKkWWugzy31PiT4BhDcaOhOM82AJcf+yU3/iVn\n3SPcsrWF2hwa7Ndw0JZnqwEi2BQBdS3MnEPS7PanfOzgVtFzRcVPIIdbRxQC\nD6fF\r\n=fDI2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIClfx/bwUCdnzxeszegvqvBbN5gVFv8druw/g56nvStIAiA+7sxPbrvtDbpNHFR8YEyWEO2nnZO5pOOzi26/DAuc0A=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-beta.0_1597982619098_0.16771229038481916"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-beta.0\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-beta.1":{"name":"@leanup/cli","version":"1.0.0-beta.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-beta.1","@leanup/cli-core-format":"^1.0.0-beta.1","@leanup/cli-core-lint":"^1.0.0-beta.1","@leanup/cli-core-test":"^1.0.0-beta.1","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-beta.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-w4qgyYecOUfdLPWJ7O1MuNyhLFOHTV2stT9GM2hJSl7vcELb7mcY9yXoP4ah3bjRXHf4GBI9CGH40ZUdiF4zQQ==","shasum":"5395e2bef115ddb51b8e9b15fd1fb08452ef1a26","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-beta.1.tgz","fileCount":48,"unpackedSize":355574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQHEACRA9TVsSAnZWagAAQPkP/R2Uu3YzTxAlaeciWKSY\nayCIgGaK2nqCngQwENha/8QYd8XI762PnnRX6wqIWwhjBr+Y3PTytflj2tik\n5XQTRNSZWACbDWndXn+hny2luCcHCx/l8xI0xnIO/iMInCO7dXeBacsBM6iQ\nHVEpd4wihNNadAJXoyJqDe+vzZzokx8Gt2PckWe2LwuQVJgydHlDQMVkHmil\n9ZlWW5gRX/9VxxjZMt3k4XbgiDedJqlkYVCfwp6KfxRKHAit7w5dKA4057Vz\nvadVWZZhhGM27X0IrkzR+gL6pQ50lvIbnaXz15GL7BL8GhqcUUWvjO27Kbrh\nziWRU46asDrBN4wQoh6hGgR5lWMVaJn2+b0UmaqejuaNcJV+HrkydquUMJ9a\nCwvQ5tCkcN9ifH3wJNMAauME8FOr6A5S0kzafo6OuB1AcUadbLVnNbe0nujP\nS1GbUtwsj8EpoWgRamp7RwpOKJD80f4mvNJ6ajeD6+y28NUcrKqH8AHWbzBR\nCbKcyGcmLxMVdxtPcotc65bfdgqUnRPe+FQj7UJo9YFQewRsZjao3yngfHv2\nFHUXKZSTst5jZ4HqwLxOXdKJQHcZuwspevcxzmkzED0CzJjRk9s0pA38RSsn\nNZFG1tOack1gXjUGxP7j/Io4JYccc+FUk6onwHAg3uwoi1+gAduVleduVafz\n4P/v\r\n=Y4r6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEJSQVeajcb29Oe2RBffOO5uSv7DPiTMLDRi0hHnHRSTAiEA48dndmQfO4FAXT7S4t5W+DkgUIcfjh8Ve/qXfdnGZgY="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-beta.1_1598058752517_0.0340533409075392"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-beta.1\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-beta.2":{"name":"@leanup/cli","version":"1.0.0-beta.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-beta.2","@leanup/cli-core-format":"^1.0.0-beta.2","@leanup/cli-core-lint":"^1.0.0-beta.2","@leanup/cli-core-test":"^1.0.0-beta.2","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-beta.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/JCYM1T6r/pI50F1exn7b+EIoQxy1BFtJsjf1cQxo0/cNRJKzoT8TyEad1VcXkC0/7rLTaBWpY4cPZWe7KHIGg==","shasum":"fb9f81dd91479fa22f93943fe57e9f6a52fc030c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-beta.2.tgz","fileCount":48,"unpackedSize":355574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQHNUCRA9TVsSAnZWagAAMXYP/1biRMhl96y7S0dwsKMX\nDQESXRCV4MSKjriKUYYi+LZek1blp/RuXLXv8r8TY4gdT3bqS8aSHR3h48VI\nIgUSt/JvyfwSBO9Tab0yt0Wd9JJTLXf3P2TkU9IIY7ZlVFls8YhMZmbWZ8ew\nY286jt/Mp5RA8hIcGtyT5w2QtaRvMdLnSJJG9IWEEjrxpK/ZhwIrEo1Uvunn\n3JxAvrcJ5w79aTwaSfgqOzocgdFeVamBtvCYNlbIGiF8bqLHjiqXw6Wylhho\necuBhVvXgctARKZ/LtwPBm+PqjC/U94S3ZL02S/jOMyutGC9edQHln2WUvQr\npB0lHUrGlwW+GeUT9ziY1Z5k/J1EJfIfdHWUBbHgFZHlWH9b3ByJeIgnH0OD\nbAwNk9T66r4PF6WMHfMlcEPNAEMbWuQgh6nXOq+V2BoXx8KuOrd+Y309L/us\nMmlR+5iKx0WaJ9lYSkRZNwjLZRGW2Wmv7ohaFG0JerjgKjrbA3tQIMnsRdz1\n86PLNFNNsqzFP/M8SkouVBNf0uW1eBbo8VOomP9MY/hdY0URQKNAsNftBrQ5\nwKLo7Xj5M8rb5ewNJhSZI1di6KW28vp70h23dfpMVGD8ar0tG7JW/SDXgtiK\nqsd/mpAJg80qlyMcp+kWLYzzkgB13fzE1jtCOWi+nDzYfBWbM6fj2uJl78zV\nWuw5\r\n=aNzq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBUudG2AAJQeA2yGYkP+I4sX0/fakm5Pj2c/MmMuE82UAiEAx0je48YihyLviELlXXkVU6AJX2TG4oZYcvZlg6iAwX4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-beta.2_1598059348146_0.4221666691306827"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-beta.2\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-beta.3":{"name":"@leanup/cli","version":"1.0.0-beta.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-beta.2","@leanup/cli-core-format":"^1.0.0-beta.2","@leanup/cli-core-lint":"^1.0.0-beta.2","@leanup/cli-core-test":"^1.0.0-beta.2","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-beta.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Bzbt3DnE1Uzq5Dsu85YUac7zZm1YBSo4wqKg8xbkGae4MDzcQwz4iF0Iu69g63IToCqKigK5SCmF6aGmeTI9aw==","shasum":"c802b6b4c28822a6d5f2d3a020071e15285555fd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-beta.3.tgz","fileCount":48,"unpackedSize":355574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQHtVCRA9TVsSAnZWagAAebUP/ilAnhjorkRpKgAdUjwg\nMZN+W5jg8sd4JmxAMl0ATOoIBs4dTLAxy23A7jRey/BvZQnj0BFkUwlrtOrl\nya+/m0FZF1VnaxyzO7b3eNtsiY8rlCpPhnnoIzjTydfmVoZ67KP+qWXR2s2Z\nFGVbdq2nFznY+bUZa5uJz+1VCShZp6UUwzople4ZOA0IR4egozObAWTos/JH\no/9969LjEt5Igw6fC/CvZuCD6s9+5UshbSlkOusddVQJGExyr3UvmyWcm3E8\nTjJghGRLh/EAr/0o1KWAxUZ5crkdKBylZY9dbSKxJIJRg0hmtegtTgd7RgYy\n/v+DFgdTDPtT59cXIn8kwd6y/OzhVLi7N03p2XrXWn2KvMpKtIgtAPiBX10j\nbG3lQZpyRo/JDoIqDEDfxkc4hsCus6iBpQb+N7TTFEtcJMFIvOzhZIZbdDOt\nJEW6UnaB35SMGOMTL+m7I3/U0AihUYMjlhKJh8VmXbafrEFph1ysT31KPPhL\niBeQOb+DD9+6rAee9ap1baW510/DiGmnSPmzxQz1TY5mojC3c5Dg/IHi9fHa\nP5f/3zvci3cB3fiz2GugFG1gpz4UhW+rDsBzR5ab4o7WWK8SAvsJueKbbwuS\nYBlLyFUl2jxLGUhlgBQkomEf2SrZW+RV6QaP894oep1urRnauL/70XsBxrgv\nqopS\r\n=s2ct\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAfQ8qOZDlZG4Usvkp2UlJUlhpOVw3uUeZdnI2GaIIfsAiEAlu0P3GCfUlCfOliIu7qN2i1VuaMc/hEEC9noN/nwR/I="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-beta.3_1598061397081_0.7746935524662373"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-beta.3\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-beta.4":{"name":"@leanup/cli","version":"1.0.0-beta.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-beta.4","@leanup/cli-core-format":"^1.0.0-beta.4","@leanup/cli-core-lint":"^1.0.0-beta.4","@leanup/cli-core-test":"^1.0.0-beta.4","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-beta.4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UXh6RwPJofT7YTp4oR75cbTzRW6LwYetMRx5FzslkVk1o9snHIPgIMJFuSYj9WtXuApnjLpIg7MZ1t4KUrGY/Q==","shasum":"e773247016bad6c3d47a0f1bda0253e9a6bf2920","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-beta.4.tgz","fileCount":48,"unpackedSize":355574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQIFHCRA9TVsSAnZWagAAW/AP/2ZSfMRS8ofz5eT0DsUk\nfNGn8h7ocvt9/WGMCm4oxJmCpOGnQmX2IqcViW89TeN8cW2OOK+WsBLxw88J\nCFC+0y2Op3d+lCy9e9e5ds6ymCKpL/XAX5UYN+h7ZnkSyIROv9XD12QUQg0n\nf53FT7UAZ8tOIm4RwpO1KArtM/5RxH7N57hsCgeDs4yHWY3nkrCZcadN8TNn\nfeTvr25CR0++awb/Zr/bDjPRHZUrVefL62/6guE16BbFwaniixvi6grjqt3E\nNYajGpD8Xk/+r+84SlWIMr1uV1VYpd3Q1hY5YwXdxbO7iYwt1T5voDMEL5hp\n/KxZ+70fgYBBievzr6Xi4zD7D0FWt2eNL39DRfjACoUpzCCD1XVQa1g7cWU4\nwIAUYP7D/nPxW1R0zaMwtyXnYEjJSw7p3k9iby+uj5BSV4/KwrWsLx3/Gr+b\n1AGSIruAliQkFxO6m8KNtAU3f2qBggl6X/NbJN30Z96XqT3vJvDwuQtoJZQw\ngudJ0tP9PH9Qm1gMNP30ECs0uPz7aZ8WuwTZFEqfkYeM211R9fl721TxBQ+z\n0LkEVBtlcL3i6U2btakI93dSfrjP2TLF7b2tjfid1RArnW60uCDjhmny/XfB\ngbxgV64aiLjXKK1dvzrK8SM8JKmvATKIroMET/bYLkjjJ6PWKDqFI8Gc5AHY\nmUkc\r\n=IaQh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+vZMHmd6ei1Yg1xSToM5OtCWudLOqz/Dvh9cdTRgA5AiAqZUk/ykKJHxboU2f45iacVNbScH14+S7MHfGk3jnOcA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-beta.4_1598062918735_0.7789318388737718"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-beta.4\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-beta.6":{"name":"@leanup/cli","version":"1.0.0-beta.6","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-beta.4","@leanup/cli-core-format":"^1.0.0-beta.4","@leanup/cli-core-lint":"^1.0.0-beta.4","@leanup/cli-core-test":"^1.0.0-beta.4","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-beta.6","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-uijvN71eR21K4Fu7zl1Sz++tLhi/Af1KBjDijf8RlqRANHM2gjxZa2eeW647bpyqOngzmT47o86OioD93I625Q==","shasum":"15ed9768582c2d7fe2243a72baca6fae29a93a47","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-beta.6.tgz","fileCount":48,"unpackedSize":355125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQJvqCRA9TVsSAnZWagAA2DMQAIDW7gs+WG40FUwCDoJ6\nOw3sI1u9qSk5VaiNvEYjtpgi6MX/J95QHPzuhZUQSdVnd1C0EPRa0++h/JXF\nIKwoaPzlFvo5FEWj1jQ+rmnn4bEHvwXn+5aRkQpJczcnA57ECOy8J7syS8A0\nEzS3Ut8vvMuvDJ034uaHFJQanmEISgAPw/RInD+ak3Mag6fFf2A0oWXIxrP0\nPkCUCURvoGFLP7HOi7237l5s0ajykxtP5E9susFJ9JtWBYtwq0yM7x+//4eH\ncpVh40GVE6AlOkQ5zdUJFpzMR2elSBb1Dlnld7PQcxauRTJJpKt4p1nYbL/F\nYa/4eZaQe4ozux15wGCxRBif3AbXJiESrDIKCnEE+v1EhdZ4fEsrZsMccamw\nElC7FzwCuyQidoKb7h4U5hZYsZ+tGLqI6VuCbpLoS484EDqF5ATEmU8ZJK/n\nSmOP0Zs/jRDLIajgphYftU2C7J2IdKpO69kaar3hTCC0Iu5YeyhCw9AUq78I\nF8VN5fZV4y42ea/Rfka455ffHTJaetTgvTu9vH+GHghRUhcvQhLs5VRKMNEq\nDtzCEpcH8Y1s4uPjocsAKekL8psFl7QM3PEqzjFwhYQud3iwuYRimUuT782R\ntBitXFY+BVHT6ztrTMXSe2yQfx5lRnPO6XLx1SRdoRjROkLhKnX/ulg2Y1ol\np8qT\r\n=pwdh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAEBD6PJhyVWvRGvVa4YwyQFUaxPQm2wvGRZbv82/5irAiBuz7yDgfhr185nhwV3Ha+RRAr4ToCKUL03HgVZeboH9Q=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-beta.6_1598069737516_0.9680323737122623"},"_hasShrinkwrap":false,"deprecated":"This version is no longer maintained and will be removed from the registry shortly. Use full compatible preversion of ^1.0.0."},"1.0.0-beta.7":{"name":"@leanup/cli","version":"1.0.0-beta.7","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-beta.4","@leanup/cli-core-format":"^1.0.0-beta.4","@leanup/cli-core-lint":"^1.0.0-beta.4","@leanup/cli-core-test":"^1.0.0-beta.4","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-beta.7","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-5JF9t5+8VSDh/2yCu9zkO3t19FZUzPXpSgGF6pVpClS1gaFfneFEzxhBVvUu9B8t1JCUaR85d3g5f4XMBuJcEg==","shasum":"8da7acaa6282dea0cc265a1584e2cf6eaa88f5e2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-beta.7.tgz","fileCount":48,"unpackedSize":355192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQeQCCRA9TVsSAnZWagAAxykP/j/3W/BG71r3RqNcjW08\nx7qaVEDBSVYqVpxCudQcwOvlkTyDjkZHHbC/Cm+KkNXJcugdKt3o7UjaZdUl\nfLRQe14E4y3ND/k1RrSpi/YLVAryjJt7ricHZV9EI24xy2LglyaOGPXh+pOB\nl+QMd00WEC0wGyI86/It5l/R9Esv0g8zkyh7wu8TIsxJFSjLbp7mrz6gQE0/\n7Nw9UNegttwdlCHRqZDuT04uEkbF0ks3B4UAe/Din9GtsBE8TgjrT8G/fkyw\nFfcw5ViEMeQDs2uMnmqSfreyyVeYosY7Tw5nxj++BXhxZy6o4PUcNKLRin6r\njBwZjByxY3ImbMJOdpqVlKiYfky2iRtFjTe5PDVao802QETkRNrVXa4MXsbh\nxHKGSGOCQHGnHSHzOn61RwXhxD4whdUXUPBY+VZnv9YvVuYcYvn7z9RO/lNr\nnf+OhYw5KCKhR4Gd+4EtK07ugv7M4+Z3PLH67mdLZZPRR9j5MTxLxcyp97Ve\nU4o0upgnN2RDCHXbqn47pdxrLrQEiaoEWyTRnrE7hOf4O7qGVTn61/WnGOFE\noJAunKXsp67QYYy52nw5CwP/IzehvugCcV3tWTSG7chYe/qRvGkpe5ugMPMr\nThm3epXZpxXzEor+qzCpCZIKknpT+I9aNGCOjqP5YrPoTZF8axZI8KwM1Tk7\nHwf4\r\n=JgBT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBbJWMwsrrLUTpjoQI4CIgalpQOxWEDhwSnZEVHx/Fx1AiASIsHneyvrd0Asxc9yv4ZYL7c5X2ntPpU0d5WtCv1eog=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-beta.7_1598153730465_0.6666297454372141"},"_hasShrinkwrap":false,"deprecated":"This version is no longer maintained and will be removed from the registry shortly. Use full compatible preversion of ^1.0.0."},"1.0.0-beta.8":{"name":"@leanup/cli","version":"1.0.0-beta.8","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-beta.4","@leanup/cli-core-format":"^1.0.0-beta.4","@leanup/cli-core-lint":"^1.0.0-beta.4","@leanup/cli-core-test":"^1.0.0-beta.4","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"[![travis-ci][travis-ci]][travis-ci-url]\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[travis-ci]: https://travis-ci.com/martinoppitz/leanup.svg?branch=master\n[travis-ci-url]: https://travis-ci.com/martinoppitz/leanup\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/features`](https://www.npmjs.com/package/@leanup/features) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/features/badge.svg)](https://snyk.io/test/npm/@leanup/features)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/forms`](https://www.npmjs.com/package/@leanup/forms) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/forms/badge.svg)](https://snyk.io/test/npm/@leanup/forms)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --colors --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --colors --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://github.com/martinoppitz/leanup#readme\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: 'APP_AUTHER',\n  homepage: 'APP_HOMEPAGE',\n  name: 'APP_NAME',\n  version: 'APP_VERSION',\n  environment: 'NODE_ENV', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-beta.8","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zFudqTv5t/NNbkaKllL0Uy432LEUf7ITO/abJS8rdA0fB8J26zulE1GBgcy0b902oqRmvyOah00ykH32tdBIJA==","shasum":"0a2a7bd6916a654f28dcac65cbefc70452933cee","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-beta.8.tgz","fileCount":47,"unpackedSize":354738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQeimCRA9TVsSAnZWagAAQSYP/3XQ6i0JoAl4ffB6it+K\nLoI+D7gEQZ85Yy4K7B1QwcEy/ehKnr2PBhiNse+NS5/4tT3AQa7Xnq3CpXP5\nGa2gT7wA0QVcnSASlWklQiMrYT55/d1cd2pXVmUFqDdGwPAZ1nu9hU+PaE+u\nqznRc7w9p5WdJzifzeyyMWZvt9WT2laseEM+JQcLqstlnkSpRCsAJ+JKYQa7\ns7fzWhCxmIvrVQGTw3Eqlh17mcSf8BDd3nOAFXvgQ+u5MzdTg0POecqA2Fnl\nMMXw/EGnXIzVYcyhWJY7QN0sim2IdbRWIoNmmZ8H2njX68MBLqOtu7dyY6LL\ncQLmC6l6uSJwIpLaa9OAHdmH8JpHZCEnwIuudknlyP9ZL3btokRNpbk6a2kB\nDCCH7SOMK/z4y/ZBWBnD/BF7XEKeD1R9HqKeVMJs5RXQ8Jgrr69IWCDLhitw\nKt2K4Bgm3yrmlkkO9I2BHPbrcVHakdIdjnmPNvp1HLwOkDnFQvIxucyE2+Mx\nnBxg6FyiUu/2VtpxtskEtHQ7o8uBqpcYcUnTjMZpzmxebQrR+k9kESpfQvBN\nFVhQFyRrdfByja615IUjmdcSPkRvHuKz+DRthyghaJ0Zjo82YS3cD3HHPC1f\nfat/NklaIpxsjAFQwnX1adPMHocdVG8aBPUkHbl4PORJ8jygOImUQD1q+yu2\n3YHt\r\n=tdha\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPVC883I8NSXwsPrRp22BHXU4rXaZmiG7xIGjeFfN67gIgbOXmk6+uud3qFl2YLE566btaBsGf1p4ars3JwjH1rk8="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-beta.8_1598154917821_0.8855245312170315"},"_hasShrinkwrap":false,"deprecated":"This version is no longer maintained and will be removed from the registry shortly. Use full compatible preversion of ^1.0.0."},"1.0.0-rc.500":{"name":"@leanup/cli","version":"1.0.0-rc.500","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.500","@leanup/cli-core-format":"^1.0.0-rc.500","@leanup/cli-core-lint":"^1.0.0-rc.500","@leanup/cli-core-test":"^1.0.0-rc.500","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.500","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-bMjC+/AMj0Lx+jHzi7VEo4En26bZBACU10n1k9VdXMAjGABnI3d9xTfDOjrMSq31nRehFI7yQ5TwLcdRRrZ2KQ==","shasum":"58888e06cf5c69be890d161561e26dba842da10d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.500.tgz","fileCount":47,"unpackedSize":354810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQfPzCRA9TVsSAnZWagAA9UUP/i5LFtRviAQlp+R8N4vC\ndb2smsFKFqFmwycE2Hjy//pZ50oDrkKE9HIQ6zQBLCmLMwiBHz++YWpHaFEP\nVFKPFYyNAykj9/eha68rFM5ohgAb1H9O2uRG5QCNjWmZ2/ZDU3tqWvXeoZll\nNxMQZCFaSVQ/MnFLtcym1ZzlPPGY3KbM6LRbplVRJRwXTl+aVfKfvSUFvYGk\n45teM9gH4iwW/ofLi7xbAJqezVTRkshtRwlCulAr4ZTMY36T/fIRSscpJZB0\nwI3lIKhSjAvjQe3taoK1kEHtIuSAkorj9OCvafl+nHxiQM8yYMuhc1BVu/cH\n63J8OYKcVsATeY5yDiaqHuYCSoZkxyFKm3X4d5gA3qTeyqki28cIQT/ZwWKl\nUTTvwBsACZSxOEwNmnd0VodDgkv4fOI1ZGBurJAOBvlJF5O2rN30WkIwG9Kg\nh2BbZyYIex+e+dJvDpkCMIAL3aUTmnDxASsQDDuZHw+izEbHmxMEXaAe1gxd\nJLHzdqFrNkJtNiqA11vQoRIAFmIEOl4z8uB8d0sQHSOE2jdcOaYCcGqKDh2Y\nXXTjyhHeYvw4/OGRVesbGkli4iqjPbjPZokTCqKL3RJrwJKDh6C3Uet0DDCJ\n8hjqix7dOt1PUxr2ZCKChv0YONBeIO5jcKTtyqzibDxf/haUz8f+lrjpA7JL\nbw40\r\n=rdiQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGeO5xOLJ/HwlcI0jIRHDyH4tPAbAaioSNA2qlf5z8GvAiEA3V+W5O/WECeNGKrtBF4SaVOVVFKyRY/HkKYU2WG17fs="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.500_1598157810849_0.24492568397949066"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.500\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.501":{"name":"@leanup/cli","version":"1.0.0-rc.501","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.501","@leanup/cli-core-format":"^1.0.0-rc.501","@leanup/cli-core-lint":"^1.0.0-rc.501","@leanup/cli-core-test":"^1.0.0-rc.501","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.501","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-T9TuhMrvBxFcvsIOms7kh0ojC85iDDpPWbxzLiGDkvMApg7dQkjCImDZmpbp72lfNDCQcVAzmz1G4jwQMYLghg==","shasum":"18320071437f26d8b594eebbc36584bad32b5398","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.501.tgz","fileCount":47,"unpackedSize":354738,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQf1iCRA9TVsSAnZWagAAOH0P/1qHEL4K6GZhwiVd/+7M\nQggtHpbug/nssbYvXVf91yM/yqK2UEhqoRRfZoEhi/UxFnM9gmr0szHTc1oY\nOP+5ELBvPS4ZZ0O9H2IqKDInQeyrLHdXA5B1K/+Da8JwMvsVpJbX3CGCZ2mN\nj4rBpQbDspODnM3UvJ97XN33M2HU6yCo2rEZgKI81ovUB+JkWg0dGh/K+j3V\nWD2A1NlZrVVZzohSEd6vFYkH2Xbi+doBZ94mWCMGxJ48LvGpB5cI2ONp7oS2\nxrBP1tWJP8Zgov4jJuMEsBMOsRPoXvyXnx7NZwWQijx9u5hUfJ5cm3hlAu2/\nujK/dbi1zbpVmq6q/13+b7tmhmBivaijPvHRwGVooErohNf+NmS9i2sJj7sc\nm9hArSYWaDXKePX65dfRjLNBk8rkrR0bJSIaioV4gFH6rO5r+kNUVD4harHi\nJSAvrCprjL1ff4uxdnRdmQDlL6cUm0HC35uNGuV7zZ2XZe836wBPP1+0+0LG\nA+HDeq6/wbr3pIHWcYHe1N35P7WXorYVypktspsis7Q7eOXpvuFtJFYYRtc5\nR5MOwdLoPIF6CDsPeKX4ScT9eP5w6otB5ZV7r8Dnw1EHMyRWYSeccaommjEF\nIU1qGNjaZTB7LoYMgE+N7wsDbcJw9eY/vRPt+N9wPIpQKEwTfsuP1rJrl5H9\nEifA\r\n=cE+s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBSskyDmYJiY30bKzW4GVPmRgBt1xWn4DRQK1KOrwCfiAiEA3BBU41iAGBPF5QWUcPw2PYfVNjM3iLgw6eR/GZgIsOk="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.501_1598160225604_0.3146121954943668"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.501\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.502":{"name":"@leanup/cli","version":"1.0.0-rc.502","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/martinoppitz/leanup#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.501","@leanup/cli-core-format":"^1.0.0-rc.501","@leanup/cli-core-lint":"^1.0.0-rc.501","@leanup/cli-core-test":"^1.0.0-rc.502","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.502","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-a1vdTSBEiejJAGlLEWn6nnpVmdy9CLNHTWLFSlP98HtKE7WQBB+/LFA5btFqSgbwdlXH5Isr+tA9oTl1R+YjTg==","shasum":"0956909e6544cc653cd63402010adcfbe08906ca","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.502.tgz","fileCount":47,"unpackedSize":354756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQnkGCRA9TVsSAnZWagAAtbMQAJmZ/tLsSkZ975oajMOd\nuYlBi9gHwEyYBncC1VsL4EG28eGhL3Icnq9gFvgWqC+HuTgno+a+b2Z1gHZu\njb8o3tAXu0F78BU8Wp9iapiHCVYEjckX4r7GtEVQhEr157Q6Kzm5tQpaaX61\nsfODzyKu2EO1PuX3ggsN2M9jHIW97Bd0CRQ5OthvU99DLB3bfqBEIb4dU9HY\nBbg0rRnV44qZIIluUnXL9cWK/QbZu+nKZn65jV4P2u05U11OIatVObtn57GG\nm61a4GOD6K1Q2Azvz/LlGN8qCmLoudSR/3dcrkeOy/smqNhOZgllk9hoIqpz\nZmohDvJtxAU4W8oIfwbhyBiZPPyOLCt8g0idGp0X+ax6y98YNwPjMbIF/A8w\nih4yeHlx4L1GlyQiTAt64Y/37ytnTL1FhipRsmX3Gi9oCR4RX7UWOusa9NA7\no/5isCH0JHKy++OGn8/rCSVFI4Fiv5kC197GRf5DDDbFhxaOe7uQZ1XE818b\nsdR3qkcf4V65aPAEcaqBisjKh63MV1Lm+PyUTIlhcIN4WYE4PXTOoklZXniX\nqBD0eqeq6GeX6YD8IQvp9mUYIWiv29RsE7qXLbi9+k6GmZBZvfvoG8OmoWyM\nBaVpzQMOJgpm71T1D/RKWZ3z9tnBM7KRyDSa+ZRP5CEE/Hh3xQAD513gfxVG\nGyFr\r\n=wEBP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEvTf8twbiOuAbc1ArnEfLX67MTYYgUvb8wwhNVXYQPgAiEAs2IZ2F7T3bIPHmyhW6Ly36v9jQhkW6aWGyPd2iJ4U7I="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.502_1598191877606_0.39047310544467395"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.502\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.504":{"name":"@leanup/cli","version":"1.0.0-rc.504","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/leanupjs/cli#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.504","@leanup/cli-core-format":"^1.0.0-rc.504","@leanup/cli-core-lint":"^1.0.0-rc.504","@leanup/cli-core-test":"^1.0.0-rc.504","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"npm install && npm update && sh build.sh"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.504","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Oy3AaaLlWgMmBgwEJGUKEzZzP5Fy6MY39brbxrTfWXTDj7Uwz1OFEpUf9eyCfl81neAfldho6oZwkBt3pxZVJQ==","shasum":"15c2c60d84ba0dc31e23b868ea0f4a5f53558a80","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.504.tgz","fileCount":47,"unpackedSize":354711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQpZuCRA9TVsSAnZWagAAGqUP/RGF8JMElY9fheXEbCzq\nLLDpDWivtYtEKajXX7F/GZTEuCVj6nCykZIV9uTzHGxzDhI0qmbYO5deVFl5\nfviW658TRowa0W/AYCA5TQaxbx88UR3CpVsgS7jZCGjQ2IZiwYe/AytgKlv7\nQva7/sAZe3nVmhDmg98vFx9VaFgJtQF2EaoZoiQyraspc6rc8rAo7XEycnEj\nO820Ht58KlLaEmENUVdFprgCWCwYPuTFJCdPtNLjY9tKY7JeqBmKaBMeSevC\nJKXsAOSSW09MOuLNx9DWBklohspjBmtlGg3I/wdwihW7VSNeJedCg6pHM2Oq\n8c4p2aFtEnLFJyTUsON8xoctf03gnNI9OvyTQJPuDyuF7wtntzTFv+Grrrba\notr9NWQ8F1BoQG4MKejLZrJjDRIAU3tT9NsA/L/4ArEb/z+r+c/LZWg66bAJ\nrKPLYONEYPjTLvfnujyR5+cbIvHp/sO4VIkVPBwMtoNkUmtZJmi+lH/tCfpA\njzQMazY5+bs+AXl0IhaRIrHZUJL65v8fvqnCo3pKWovZi6a0CxmhE28ndiOP\nOpF9T3jwWTkJftFNM5xMLZqMmSXDzdWRC67S0gsgGe4tOhTzMCy89NXE80Ui\nbwfP05u9SkxvjB9E0WVhwhn4L+VQAk1+BV/0OfRuh3iqvmKEDDE36TijSplF\nDB4F\r\n=asyN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQE2PuiPXNJ/dwow8LAvWAODVCTRnU59CTZ/LQY/mYTwIhAPN4s5AJy4HLfYw1aznZiTEG1EHg6C/tcFk6Hq1nDiR+"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.504_1598199405433_0.39372938105065614"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.504\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.505":{"name":"@leanup/cli","version":"1.0.0-rc.505","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/leanupjs/cli#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.505","@leanup/cli-core-format":"^1.0.0-rc.505","@leanup/cli-core-lint":"^1.0.0-rc.505","@leanup/cli-core-test":"^1.0.0-rc.505","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.505","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SDsTw6roaJwzmgrtNXM07vchYzDnu/g+0Ezd4LoleRFb4x4aI21MMv+BaKyJaW2LQfKwKdqCo9FNkYKbSUdYDg==","shasum":"d76541013db087432a01383247c9011f89ce7637","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.505.tgz","fileCount":51,"unpackedSize":379825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQsOsCRA9TVsSAnZWagAAcHwP/AhA9exmWpPMOrqoZXCQ\nxu0ExsbWyMpmX1z6uKnx3mb/ImbHVNvSF0y5b/vddCXMnrk4gn6aj/T56VSK\nR8pxDPfmb2JRz1f3f1YxkGEDaRlEhEGUo4zZYdtQRl03s2Gjch62/iQHQhv+\nSAtWZOA+IJ43+WAB7inlHSXDCUenxtCLz+qqaWAramUOXIjIVRcpC7M2lh1v\nqEjL3VEuvdmVzDOzddenQeyirLhLZykf4BOO+106sxRA/zYSytsF91oN15lS\nktRy7p5e6tKkX9h0bswsd6b859KaSiiIgZ1DPM82p2FM8rzRuRCGCpPeKqIs\n+OClYdkf6j9i8V4f8JcSkrejD4MEBET+oJoktG+N/UHBJInLrY78er/hB45Z\nqOAI1HuM9wj6kE2qkUl8WO3RILwEKSvGShUek9+V/hiK31Cv6r5yCsHSKOkU\nNhM4PGX/byXHlzp55LhaZTNIjQHg3fqK47YvxNvZuOcySkhC5Z25lshCaeMB\nfYpFWM9d7TP0nHqWIX1Obr6gZV6xqk+xQnPNzDRQjsmaTofYMytze93aQfuM\nbJdpqoBX3SUHKCiOviZcKO8l+7XHk7dMh4M2FEWNc0dDnoKSCumGeRekrrDq\n+fbs8UEWHMWHGEcI9SXDRfBiAP7doEzI5HhnPwcdfclrLh/yNa+pykvB8tYp\nW0H5\r\n=Ymc/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCA+tkJlyKYk7vjw9eXDaWSWAvAe4BAZ6korGmxuZhI0QIgOnz1o1q6hrB8tfvzMkq8OECHVIt1kjCF1Mx6S+tYXOc="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.505_1598210988252_0.439832383188697"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.505\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.506":{"name":"@leanup/cli","version":"1.0.0-rc.506","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/leanupjs/cli#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.505","@leanup/cli-core-format":"^1.0.0-rc.505","@leanup/cli-core-lint":"^1.0.0-rc.505","@leanup/cli-core-test":"^1.0.0-rc.505","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.506","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9tbRz5pl8kyjj/g/qv+irGQQWhD4N3wqcjeDeXjb3L2n8f58cRb9BAwyeqURenSlv75l+kYCCIUQRJRQ0rFwxg==","shasum":"25b977ec750c6ff59c76b7ce2c11dc5db364862e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.506.tgz","fileCount":51,"unpackedSize":379825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQsp4CRA9TVsSAnZWagAAXYoQAIQwDTZhPhPyVuQtc2Ql\nsOWTPIJujIJOX/IQyFI7GwlB+Bd3xh4YFV1pOr0aB7vzgFty5M8C0Llo5Wwn\n3YXn3QFAG9dSW6aDHHXb2+U+a+dfGng/+7/Cgeu/Xg/Lkb5Hx5fTXMyPmUqf\nPWMLAbfZCtr5vvtJQ9OY3r4mbSNI3NAKbEkWmefiyGL/LKGVykPwRAAowtVL\n0NP1E3pY8UolQhcs6rJdy7gS5edTCom+JPOBwp6M2Q8cEIJDP2NKVLy+yGx1\n+HpRri0SopjPSFp8TzgdV2wahaMlNmJmX/RXuJJ5D4RzYLvjL/dGuIYV23wO\n0/H8/mLbHXy721FNaYfzmVddka5xMEDzAdTCbt7zRngGvesQbMLnVLy4bJeE\nofi8o+Fxz/bdvzs5vN5kRG/wDYLxaxdo0b8fbqo4CtEBzI+wNeEhpLMNFbAq\nKRHjan0DcANxD0OfMUDjnkQWhjGersD+MILPI4uzTTLF9UjIQk898AolPsg5\nsiA+lAOh1jYm/ny/UvwGGdk5mlQoWjMni89y5zFNzEuozXG76l3SwqCDD3HN\nRZ6kI6eUrAF1bonQaaHzJ/BcWKuMy4XmAFhKCQ3TJdDtHOWKF/cz9o9Q5TkY\nZ+7luz1grkxCiiFiFeQGVLXl25aggZB5hGLyk8L+T3Zz/NNBGvoZqu4whYHG\noc5n\r\n=Y4qb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtvimvCBYvJ7Lxsjn7FpMcy3g2b6uc3FkztuOAm+TcuwIhALMU+SlwrodAiDZF/+q/qdcN0I7Muw4zbR9+3cCzwohz"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.506_1598212728288_0.27401839547232454"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.506\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.508":{"name":"@leanup/cli","version":"1.0.0-rc.508","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://github.com/leanupjs/cli#readme","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.505","@leanup/cli-core-format":"^1.0.0-rc.505","@leanup/cli-core-lint":"^1.0.0-rc.505","@leanup/cli-core-test":"^1.0.0-rc.505","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.1","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.508","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-7W/tLe+DlSm5kytLdxo3rqpxenXqvaRhlSAkaFcvsgtlqiy4QJ08XaMoQaVU9uoncSEQ4g1U2rJhP4bqLbKheQ==","shasum":"9db10e385d6e0d3eeae8650b63b46bd2c7904907","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.508.tgz","fileCount":51,"unpackedSize":379988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ0HdCRA9TVsSAnZWagAAtSMP/R3GOUeGOIeTQUl3lg7V\nzekCW/kfJVCEOd/b6xeIz3fmy5HYw54M0F5iiA4lUxZ/PE2RvSBDYYc2lHu+\nkCw17/e+2/OzMD8X+PWerLXGU87ptgCa/h8nwBCPJZJRo5cm7cc1x1yjPY6Z\n2w1qS3VuH1hn3ajeCOTFtbKxR2GBwyDwkEvkXon4bP5ruKV+OfgtxwfaIhS+\nDP+rgKWWzi6l8dAPHSSZqDvWsFl+zxyVkrRzpREdeRd/7wy7sru36gpSNC5C\nnDSdIdcXXUK1PDvpaSOE8z6UVXxMuhXnaBTWWMU3xS3Sga+C+GZkIX902qEH\n7F8JwY4nnFZvxQZiFMbtljPzxiqVK+L4Jp7JyiIFN4kskLT2i3WQsEQA8Rjf\norUHkQMkNeMKFzbhAKOnt+IIw3qjZmanwbrG38+iqC3qf6I9hFsq8YuW/cT0\nCCIHVInsrPfFKrDNyIXRGVdt3msdsexhNzWR2v+HB/Fyw/XMXnwNmi62l1qk\n3CljFOHo7JXKSX/ysSQxTR50fp90fplPFpP7h8/HvepX+ahyXu7gQklgc8pb\nzomReuPg3xjU/zUxX9F6Sjlwy4RzuTFtzBFI7JwBB+BSrY+f73PfxmqvPG6T\nocmldrQ/BDW88ZTe6efYa+mg6/OsL3bRL7g4fEhzFBC+vLpOI1re27m7gpXW\nAhJj\r\n=ouTp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0fYXCoYDKYemsZuL4WwRNJAMxlhRPWF0U4bnhpNU3QgIgX5PMcOD//NCHQ9SettEv6TR7WF4BA6fY/NG+rFZIbsE="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.508_1598243293063_0.6099463377874237"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.508\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.509":{"name":"@leanup/cli","version":"1.0.0-rc.509","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.509","@leanup/cli-core-format":"^1.0.0-rc.509","@leanup/cli-core-lint":"^1.0.0-rc.509","@leanup/cli-core-test":"^1.0.0-rc.509","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.2","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^6.2.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^9.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.509","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HTCyYmk+peB5v3Aji9DT1lg31ceb1IL3jwi4BZpcuZxE9PGpUc83xYDhvypi44Dr+nUU45dLuNpB5G6o7SJiMQ==","shasum":"f9b47209b76628b7a956855f2b3dbdec4cba3cfa","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.509.tgz","fileCount":51,"unpackedSize":379927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRHqwCRA9TVsSAnZWagAAjP4P+wVrPuiptC6iBwqxMtZi\nPxmUw/Ny4lAEM1E8XV623Xm2X/OpumRBsg/DFtJncp0QF+Wwuw0L1G3u09Nb\nx8afB6c57pnskx2Ax9UMCTEJedOtQloi5UF3pWhRAjNlEMVGiAHVjLcb43NK\nQsVqVIY5T+mvVdxYC+IQDOjz9IL3GrWKppuX6IT2Rnqj8zSVBjrlrgFDEeLz\nPKhOnPrwwOnTiyTMJM2TBZ2os9cbrJ3mf0NFpwdaT7x5f3jbW0dhA1ht8D3I\nEqkk/lHWPYc3M/F4Ivbze1I0nWhEmhBjDpAbAnW5+yuXVbnHM3yZyzD4tT1S\nbVm2pA8/EqoPruRcTG22CffGryYO72VsZhBYxjZvyQHTLUH3J5LKGUIRJdLO\nWy0Cf+AvV7wcXU4DvMyHrdfpZATZq90oN7P8Y8LYVaU8k3B5VvPH7CAZjud6\nNoTtfQGPwWAXVYrpwGPRNhmm5ScgWRn3A6GlHefQbUHsoXHQOuibuxxl/tSC\nRtP6bAmZCnaIj1qsK3lej1o8q3hB5p5SvfDLjL4UbhNu0Znvw2wULJ4q02CZ\nrwbG3Hy0JEX/FNTjW40vEUZZ1SNsQHWdXv0xLbFyHdDITprgFBvWzflOdaEc\n1SFgnAXUlTWaAGBaHXxKRxIEXNgSFo2Ugp8e4Y4AzIXFfbJUQHJZuiA96Jyx\nDBTC\r\n=Qdsn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSF01QfHX7I0zOAlNqaUU5ZjXvjQbZvhsToTfL8XqrrwIhAPzgcOH1Lpl44t7D0Rd2BMOrsADfQtFh6JhElB5L17fC"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.509_1598323376116_0.8458322553925548"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.509\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.510":{"name":"@leanup/cli","version":"1.0.0-rc.510","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.509","@leanup/cli-core-format":"^1.0.0-rc.509","@leanup/cli-core-lint":"^1.0.0-rc.510","@leanup/cli-core-test":"^1.0.0-rc.509","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.2","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.510","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t0FYdKPiXbqWHZ81a3hfJC1xRotRZESPLjojFRGiqAus9C1AE5ODihQxLEA7n128yHrdnGGWJn3sAEK9t3jYvw==","shasum":"77f15d70733f4b03a852b36b4f827fcde354f6fe","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.510.tgz","fileCount":51,"unpackedSize":379928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRV83CRA9TVsSAnZWagAAc24P/2E75oJ9SGGRU70bR6Td\nsxgeVik7WVKC5Rpg80dCfFGfgLeOKfbz2ClP90217WfyGT2ZB5hKXrgL3zVg\n2U/p7KoJc2h5P+EbojbCs29OHo52zejOPpR9U2AJphbBp3Xgs9gWwk57+UQV\n7pUgSRhY008q4cMzLu41CqsCUsfgrPxXyAM+C8QUh6gxi33b09LyLFJXws9i\nw66EH+AZ9YMY+Mkll2O0ApWFrdgFPNrWjuCD6NZqO/vDFaVOpDDZf0MAoCUu\n6/Nk2QSm0Eg/TmLeu7TVaqMHO60fT3qdEip2kbobD59wWUcjRsvCA6QX96ov\npLZFbHaqiltMVNPUkbB5eqhVwTkBlHhKW27noOEJKP+Pt+RwaPURsIEpOkKZ\nAya3eaSbEVkOB+0FJRp3GYCWa7EJIVkLs/cEH1YwGfBd0OwvVgwo+np900iX\nwE9yYDI/x9aGF6WsBQA2p6RCXkUZVzBDo1ZLvwlsLCsDoeAqj5mgSW6gOIaD\nscEyp66WAlkv3+YgCzF7DX2QSUyrwYqF5dSmuiMNJOASy71vmYphFFqshl6S\nip3wDkaJ6vUdauhK19mSmmrKLrG/VqUJqK36Dm8PcUHA2fJxyAH1R8ohPiz/\n7f5Ia/NllL84SsmUyKaGnwNWzN5rm5wiR7Q+r5wuPrJJ6pZJpdfK02prxoXj\ndCvC\r\n=+N6G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICXmblTTKxPJcftMJ5k1jjkwc8727CfWsKYBxClisTCYAiEA670Qaui4NSOojHNRawj7CzAElWATdDken72/c+9HGqE="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.510_1598381878739_0.7648433945493851"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.510\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.511":{"name":"@leanup/cli","version":"1.0.0-rc.511","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.511","@leanup/cli-core-format":"^1.0.0-rc.511","@leanup/cli-core-lint":"^1.0.0-rc.511","@leanup/cli-core-test":"^1.0.0-rc.511","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.2","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.10.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.0","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.511","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CHM+7w0pbZZNTo05zZwvfKXEp/xMObGBExQWtQKkE2qPsYGFZSDAU2OMQuHcf5Y/ZKRg7ff532gQtPsGaXhmRg==","shasum":"e3319733bdbc4ba52684e6d8dccc7f9440b100c7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.511.tgz","fileCount":51,"unpackedSize":379875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRsE8CRA9TVsSAnZWagAASh0P/iGFnCyXefn7Ig8MLVqv\nndk6YggaarI+MvBU00GnJ0HziKunwAmqHLa18t9k3lUvQAQDyw1FY/oX5ZA8\ncKZwo1Nmu3NLkOa6ThafWa9knb0soR5QYhc16x1A5ZoEcBM3XcAiBrZgcaMO\nz6E9LFRVBNbAD2wjBI28bP/VItMRFjzSSeWM06/4tg/xhqFMM0xY5GTe8MSs\nZfoS8bJBpcOAuJ4RTRmrln/5jeeO8uPtW6hkH8RyL1toszEFlCTsRPBVaIPC\nFM9LrOOiJ6DW94nlLlg57ba/dhuBxlm2ORE+HZzLjAzaqO/SImWysKGEMFqZ\nQdLd4Bwmkmh5p+JLJO1gyaPEixZYZlpgMj7tD6fjsYmO8glq5PNF2A8E4Vi/\nGYQ3rwQWIzpTiqdO8B+8AKybNWzmpBadWvEKKZkrI8Ftm7mPwRpt04rfLfEg\n6rVBOftes8zAv9ajyTvIXTT3yJRar3/tuExRkbu9kMS4P9tGs7ymuqGC+kVS\nH+W/6JHAr5Exo/hQLu9lvsZ/XS8VGtv4Q2ZdSTqG01gM4FEnunoIIVYrKq6X\nsd+qeikZZtY/p053v1mBjroVXV5lIVUadQJppfOhrMzz9N5Ds0ixlVWgwuPL\nbiTXWHcaDfpCK/a5SnT5hXlFyqwBLRhsKB85z6xDaOiabGLBG67flwxi4HLZ\nQ6oZ\r\n=Y8hV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzk/3xLxjUmxCorXLbUiFiPv4TYC1mKGxHKRgiYGjP+gIgWtcHL6XjkklHhN2+3MrTJAk0i7sOozDe/gUt45Yq1hA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.511_1598472506996_0.07080459461814437"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.511\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.512":{"name":"@leanup/cli","version":"1.0.0-rc.512","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.512","@leanup/cli-core-format":"^1.0.0-rc.512","@leanup/cli-core-lint":"^1.0.0-rc.512","@leanup/cli-core-test":"^1.0.0-rc.512","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.2","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.1","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.512","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MoxyhFWnVKaSQ14vrAwrfq1e0pHgjZRToF36J3zSFP9jCTUKVKGFMUMnAbacM/sWvZxB6vnGjdgC+cxhaLyuNQ==","shasum":"a6546da8af9078f505dc037655e378b0b8f8be4f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.512.tgz","fileCount":51,"unpackedSize":375707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSAi+CRA9TVsSAnZWagAAa8sP/A5eHrPqPKF/EBUJazC4\nGKjf6Z/696EjpoMz3NyYuupjb22e+5T0wURwIthbJqM4JLlAbv0cl7fOt/Mp\nKw49e8kvOL+R2qkeX9PdQWVB4/lHeHujycEiNrGlIpnmq2Q7f2/HF5H2am6f\na4jCUfT8u78PGDU66TUfrvbi0wenwFY/vWkEUWjRr/1Xi58Pp3vCzLoDxWv/\n57ussNh5axZpUgBDGqbbOSDLCohs1JDPmOzvpoEgeLqX424hVmmnWpRzMfWB\nDTAzSVI9OFKwWHhTb2+eijSkjko1gfnEnHEkv7QFuMvnG6xxFX471byGx6yD\n6vQnEwPDY/WoSR4AkiJVwzu0htkmIcKQ6fR/2DT+TjZtRf5LJGaxnz85NL8Y\nan7sOUaPYur0KGtnDnyYS+sR1wXYJiEUuTfy9djXFLbGqY3iz96uer04Qztn\nneXJDbet0/UpnUgoHlYxQemVDE64WTvO3PVTiyhSBta04TkLvGKc4l9SJx1P\netkCt3JQdxcBPm89Ea4iaKQF4eARJGsaDVGEzLpAvhZIT6vU7ubpQBpffzwo\nFBtBgnbAsqK3xK53jlQY2gC1HgsLtEuINL8tEg09xG58J9SvOUdm51UiQKGc\ntr1fOwqOjsfgQyualDqnM+QSJOssKP7gcNZVD1IvSrFLHbHlJ3L1y28+/eun\naILq\r\n=o841\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNdrpK7YFW/XvuMDYSWYzCZJNau0KqF6bQqltXSTse2AIgIxbCgjBPABYN27e6yHFYKQ8AP1c/o7xCYMlDkwQVbQ4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.512_1598556350115_0.3519313301181759"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.512\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.513":{"name":"@leanup/cli","version":"1.0.0-rc.513","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.513","@leanup/cli-core-format":"^1.0.0-rc.513","@leanup/cli-core-lint":"^1.0.0-rc.513","@leanup/cli-core-test":"^1.0.0-rc.513","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.0.0","copy-webpack-plugin":"^6.0.3","css-loader":"^4.2.2","file-loader":"^6.0.0","html-webpack-plugin":"^4.3.0","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.1","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.513","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SxAXAuKNqUofByrCDngSzXMDUCtO+Gsn3yxvPm+48nJRb+Yuzkrq4UeS1IENP/pccucy4qq8Tjid1g7966sQQA==","shasum":"ef832f6f738a72628e1374b56465b52a813e45a0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.513.tgz","fileCount":51,"unpackedSize":379875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTHMrCRA9TVsSAnZWagAAAf4P/1kyDsZUQx+u3mYBwx2K\nsOro3X55rVcdj+9vVQDQhB7EgovyVf6DhcadNkwS3pprlGSHDvi2wjkdKLOQ\n/VtZV4i32NspA0nJFeRrNgEbs6ocrVk2k2U2qZTMF+J37/q1aTGW/mWSwqJn\n9sBy2AzHPlWBbkoPQ7KuvIkeyhS/80CeaT98gmnRnEXZA8zl9pdQxpInd7MY\nu8X1LVlZkOZFwFGD6qerR0CgULt7FqiO1B4qJ96UG+2A5k4rTrdytBGcmUbJ\n38lWSTMepgmk5GFI+DoWhaBFUIVx/Em5TznVM6zprWSZZynAAJ0jf/xhZe8p\nyvBZdCUo8XsKIKdDqTWXPQkNMyPy1VVksgyi1PEeoxzNbBE0z//+rsq5U3vo\nHOfpZv6QlwrnbVFBRj2mc5K3JwnvsPHKaZUMCOn9IcXLoQaD+WYdjdkz78O/\nMOnFY0Ctg3QvhIayWFyQ8uxz8zgf4zay5isJhh9Cy9ViJUGrgV8WwBUeO10J\nd472G18TXMqY08w7O9iIPg9+xL1VguPPVTr56ZnWZcKVFHqxbLfdxHe8D5A+\nmCnk8uE/I/UckWGa3y6dY+Y+drcJOcfc31wXCBSITVV1lwwX2buGNEXnQrpR\n6U0l7YXeCMCw5XCumA6XsmjO3BPNAvmxRIR1S8LW9/T2LU8friWzTVTVIEF2\nu76d\r\n=a1N7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0qOaUGU8nqKDFrldfMGiK+xWhOM0zuvfQVbr6jQG25AIgYLSbPWy6CwREhNLvTTr9YSY3hgveCGbpJWSgs3AnDHM="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.513_1598845738736_0.06883370361689467"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.513\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.514":{"name":"@leanup/cli","version":"1.0.0-rc.514","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.514","@leanup/cli-core-format":"^1.0.0-rc.514","@leanup/cli-core-lint":"^1.0.0-rc.514","@leanup/cli-core-test":"^1.0.0-rc.514","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.2","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.514","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Z5IAoR83QREfHDfgoB+7ResbE0h9/Vv5LYFrqVMnOKvR9tZ6OuaqHj8xES/KezlUqeg1W6wY2ZnefOhtja9/XQ==","shasum":"7946744f031adb6e459b44dde15862e88ee6a9f9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.514.tgz","fileCount":51,"unpackedSize":379875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTXUuCRA9TVsSAnZWagAApysQAIRGHYND1l37HWkCdlZN\nbTzMWYkL8XdIJVueXFFoB3Jknd4WTyxlxbe22smjnf70gf94FOsxUvpdg1Zb\nVNES01pBDWA+5OGSXF9sODFVJ6uFp/4HC4wS3+Ah97CjVCAxa4Pih8G1kNln\nZNMImpOjMISV0Jt+jQ/aWBvSQ1hxp0DMosjRtLzm2gNHlQNMw4/3OTQQyf4O\nbFbObgJDAzb/zD3wa7dIg5GjspObDosdC9QORj8zbFVW3XwuTFbmzb8BSh/B\nBKpK/FomDLMGdZgyj95WWgj7n2kuiQi66I85K8+oOoGMge3Ne2SetTPH1OY+\nHRFAWOgBMXqNmu6gn5lph3X/rxNZqWB9V2vAUuBWk6A6UoZl5g5L4rwyAOaF\nAawdFd4x40pscXKnr7NJJCGVvfBvcp6Iu01+csWmHMxi2MwvCmUUfTPZq0OO\nvpZ+hVZkLdVYTwHE+t4N15n+ru8bw/ReAW5mFRlNooZLsrXOFFkd0xcO6A6O\nzOrUtDWqlJOQxX/uMJtJv7htsUy6OHSA1KDmF1Bm5M+5ECJaBJdeGAQ6zGLE\nVpsk9rSdWQAB8Z2yCrCM0FSGpOOpYakiOr+5ZDVsgtuk/fs2fOg4WoRtylQG\nFqcHhfvOoAHlQAKx63MAPxYTl/srvKRefaY5MoiCjlv+u+o5r5qhjGUWGMhv\nVoJn\r\n=9Jqz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHx9WxkDFQMXlGDFnVJJtpRLITLaAXg3oM6yNdc1qOjgIgc+G7BeXNxiPjnzIPvd42Cl2PH6OWDbqqbO8q653tXlc="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.514_1598911789233_0.4170222831115733"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.514\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.515":{"name":"@leanup/cli","version":"1.0.0-rc.515","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.515","@leanup/cli-core-format":"^1.0.0-rc.515","@leanup/cli-core-lint":"^1.0.0-rc.515","@leanup/cli-core-test":"^1.0.0-rc.515","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.2","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.515","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/xbtpLSJIINtqDeU5c00FC5gIdwMFXSHdR6NUcW2uXBcIIDXBL8olLxIPV737Kn43l1JAuFEP06Dd/5SNVCshA==","shasum":"9ce73c08140e7ba02f47d125d142096a40c85bd3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.515.tgz","fileCount":51,"unpackedSize":379875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTXZFCRA9TVsSAnZWagAA/iwP/0UeQ/f5Ci33s3MeLo0y\nX1Eq6cIwQEr9clbCw44lGvUz9LmyGH6sb9ryca4mtZasPsyS5BUEqjL79iK5\nbpKtuRVSUcTr4c02gR9y6uaDpKTFYUVgcs2DMUhsPaY6CD8kwhithyEIShoK\n5TJ+O+G2vQsvW91XImPgjxUiGnhlr4KrFQ9AElQd6eCs9HAgZ044/e4uHRDE\nTkXfinj1Ma09t1h2kHyO1/O9jcGtN53C3O/UKaHoYH43z0D1sNXRK8xAMtkH\nLJvS4BM533WUvcCkN3fi6iorl4SfOalazWC8+xJJddiHAJMIWhu3e5hPjyQi\nU1pVydis720X3pOCIafgigoEJv5XdAoLN9vdXXfly0JBw+oi3mw5dQ+aGzXK\n3Z+cMZPSoACSwwz8T8zq/8MX7j7HvxOIFdCdoo+ghptFHmCBqOku4Y7RT9Cv\nNskO09+7MR9zpSRzOkhv99KCePku+Dfq3dxsn+xwjw3kEq7UlkBb/cZ7/B5y\nOCcZygy+L7qpbio5K+O7AVqZeWyrv6Y7ohLMFr7Ji3wNFjWQ+faFDdPVYtYx\nGZz9cVgFQjmElejUKPSImiTU/kqqYRK4N9tB9XbL9rfBvHoqUQgfdNKqdpM2\n+Qrb5oE3WfiClpqcNgStau25Eue4Nk9ekhdwxA1W/gCBGazkqO8PtLqCkxHN\nNg13\r\n=23Yt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdGxTzXromkllxWx0zx6QMMqHeWtv87S9L+XD7EPdQZgIgFhg78RSsQmmtcOUCHgJ9DrR+OjdWFB9p9muk147IR20="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.515_1598912068710_0.34179747217080725"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.515\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.516":{"name":"@leanup/cli","version":"1.0.0-rc.516","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.516","@leanup/cli-core-format":"^1.0.0-rc.516","@leanup/cli-core-lint":"^1.0.0-rc.516","@leanup/cli-core-test":"^1.0.0-rc.516","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.2","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.516","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-XuB7hX2qBST30Lqw+dfvk/Sfhr+E4A7Y3UfVf+YrOtQRh/ilGYJl30waxPfl/MPWJwSPW15/OyQYHYqD/hJ+WQ==","shasum":"0f1e052d5705e0e7e6561eddc57f7cd5e733e89e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.516.tgz","fileCount":51,"unpackedSize":379813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTt7cCRA9TVsSAnZWagAAAIwP/14xMaRvmdrMZC4UBKWW\noKJ7VVfvrYUgnVnt95OLnNa4WTDCQmYELzJk3hY+NQpzPpz1eqrmwCQ5WIPa\nGP5mMROW2LPZUs4QjBy7AJia4sen8egHjjapqhVwqivmM3LjJ0M3d78Pxa55\nyZ5RHJTUv+zvCyPyyTDJRjNb1tG5RJMV6+FsWR0dJqwJ8my1aCfKGqJ7KN6C\n1l5ixkGWldK4twKgvEYyWALXM2mrdU8A8uAK7MnPa9k977dtWvU2UCEe2/j3\nARK10yO4QQ6EjbZiMcUpgJW6KssG/lB8nRFZjThc7FUTB18LFLkQhBi6MATm\n4/S5H8R24whSHpErpkGSVxhYehFn3XznWJ9vASBMcnz69kfdabnzaKKUp8Vw\n/pLoUi3+XSCOihtDSlMcOZKAw/s+62CGrLcaNDjaez7sXPljKODPE1WlohJQ\npH8f3rW/yYEWSGr15jm7VxcARv6e1orYxJoC/d2UdAubOfcxMCs68Lai2ICZ\ndEnOjSyUfzOhMtZs6ACiVPGH+wL7g6i8VPoyR9TI0lAS+/Hv6RhU+2GEBfUb\nXOVVATGjazacYc4PqdyLNqck/Uy1gHGtInFa7Q8JwMqpXqtdnvHYsbggA8rQ\nYD9AsHv+9EpNyoL4gs7Yr4iPY44lOzu/rthctUVfEj8RZcrdqh4FWT2w8n1w\naR3P\r\n=ZIL2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpsFDNzfwYtV5TIbon147X85YJwRAJumRWomkSywURYgIgV5EyyRBZoKAHh0ZDxSOxxWqNnyKnrX9g8sb2/EEmufk="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.516_1599004379490_0.7364970984422208"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.516\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.517":{"name":"@leanup/cli","version":"1.0.0-rc.517","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.517","@leanup/cli-core-format":"^1.0.0-rc.517","@leanup/cli-core-lint":"^1.0.0-rc.517","@leanup/cli-core-test":"^1.0.0-rc.517","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.2","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"![GitHub CI - Publish to NPM](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-rc.517","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-k3m8QzqEecqtZrzRDzhOM7Els+yUIbiBUO+8oPC9b6A3fsizFiUfhyw0kTMhsPn3A92AJwiCCEtZCcQWtub71Q==","shasum":"9022edbe0680d98a2912c2f4d187cc44ee290ee1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.517.tgz","fileCount":51,"unpackedSize":379813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUCYNCRA9TVsSAnZWagAAPqwP/iOqjX/UwoRXwK6NbyGr\nHwNS1yttgR1p6p3c4Erw3St5uKGLqHbqzggGctAooOg5Kuu2ms1TUHnr7PDt\nT2DQazN7jPwl+nOXh9bxHzYb74MrDCG4rS/PB/+ouFtAcAifUuekoR2y6gNB\n7CmLgIakVUwi+4r9w4vGKoXDv7m3PKJclHY+w+Rd8pz2LgcGG8N1yOZamf3v\nkQ7jIRrRtW2zoh99g0x1MWyMs6telqG6u2ZNU6T7ROb4eLqZ6yhOpv9j8Aw8\nb24JfsW8hiaHh4J2QpY5g7suhwYnOYYjGW2o8Ki1FoYiOvAQMF5J0SZxS+cE\n/EJ69AE9b03MDXswTcDcqYt8dHIJUaHBde3I3ENSJaP55OYo+rVG57bFv6r1\nhrGEZCb1k4ruDgCWLcrGu01GS7t96JheVvH1++GsZ2AGQ6Cqfnait7Pd+Keh\nW1V5TwY2F4Gm1XZM4wRcrgkyG8xFz1qBBOx/k1LrGsJkmtV+BnkXPafThPUm\nlBPJvaAVnL1b1FJJuh6cmu68lGXeo78sa1rV1ZnhpTd/7Rs5AJxZA/oSgT9i\nzhyfY+I492h0Cg3nvDolbM2/WHUGv4s8SaWifMNOLTRGGpDSOVxw74FI5DBV\n6i2aEEe+wnIsXNsi3/wLnMwIzazDKDWYeCS9/5//969sTTQohr/6k6L6R9jo\nem+Y\r\n=2lrC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmNk+n98WlEAIGTiQbAO1VDGonn+2nBV0l5p1by2SjQwIhAPwHrLjoSuU6GXdKE5tcnQQJxWTElTRdmtIRbU7G5F5z"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.517_1599088140505_0.5112455813698678"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.517\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.518":{"name":"@leanup/cli","version":"1.0.0-rc.518","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.518","@leanup/cli-core-format":"^1.0.0-rc.518","@leanup/cli-core-lint":"^1.0.0-rc.518","@leanup/cli-core-test":"^1.0.0-rc.518","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.2","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.518","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-fybVPtPd2L8YMGuYpHnlJCMssUgBQ6HTIYtrPVQzPQq7umV3e2Pn4+Gul+P6cXV0HqVHeMpzU221ZAkktvIjiw==","shasum":"cda12529a78fea18e4c14f2f2911f629dfc00136","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.518.tgz","fileCount":51,"unpackedSize":379820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUCv6CRA9TVsSAnZWagAAP+kP/AgXC1hs/GV0KdfO0rSg\nbuCYyabO5oremwUInCcqJdTKIagLc4WgUoXDDTZRNmK0k2x+KMpVEnPysQcc\nKbTFaK0SZXR7d3kYsm7h8BNdbh3NgWKNzrFyVjfHyHEmR6otJZANGgJNA2EY\n2V6CnUv+OUPsHUZ6isuB9TT59YCuMcesG7eeV//wuhun6R5grAMsBrFiT0En\nTVarL8qcp8fWdCmKzy9oSIoIaLuOGX6p06KuZdSx8ZRYywZ3KvZM9OtQIWCn\nZf9E9a1CodeG2/QIN7NZhu6fUY2CstOYu3gMNWYmGv5Ufu9B4aiw+KaqYExV\nzy/12o3WrOgbSeiXH4gkWhOCPnmTBc/el/hu7M3qY3DM4byXfQNbrb6+BY4v\nKHCWjasKFVxYHq5X7Olea2PRSR7eeVtUABX62vb3/WMyn6D20pehLHJBfd7H\ndebaI2j+F4IiW59FnWdOMMCkVUMKA27qWbMW5xp4eOWM7MQp6m6G3O0wEyFu\nHBiQXcmsK4GDnOa8IUNi9Chls0mNbbvF7tfL44XM0Lr0xqIpM53Chl7hQqwW\nhNNm0nxp+smRAmKCjIT2uWQOz071V3LwJnLw29HY/ZVge1gX6vRZ9e6EAqcI\noxZ0B8HI0KxNhv5ahG13vAq2cSMo30+N/GPUiYySndB7Gky8t32Q7aC6Re7Q\nQLVM\r\n=5cTY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBBTSvrkaa+7I4HYv712LZqUWSYOey7XhIusIBcIg/5QIgGOEfi+CaOy57k/8vvtXedkDPvv8JNsfcLDQVsUe/7sU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.518_1599089658388_0.174325249753694"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.518\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.519":{"name":"@leanup/cli","version":"1.0.0-rc.519","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.519","@leanup/cli-core-format":"^1.0.0-rc.519","@leanup/cli-core-lint":"^1.0.0-rc.519","@leanup/cli-core-test":"^1.0.0-rc.519","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.2","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.519","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EO9H5mRf0oZwjseGySHOTr63jr1xmNYOOpfdXwEkTCrQMxGrjFXKW9gPdOEAiNzbb4RhJkVSTCs/QzJQMzrABQ==","shasum":"e328f308327853f0098493959a812ca2103d009a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.519.tgz","fileCount":50,"unpackedSize":377680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUDOXCRA9TVsSAnZWagAApbQQAJ01xPkPi0R2TpJh6+ER\njlXqHuL4u33aFvcYDaZeMJkwEY4TgayWk+WWV5KiK1/h0+vx2OSWZ3d2Whhb\nW5oCWm/JOm9BolevjI1UQlaugvYPwKxUqS/176fAsF9hLyxAp6ACbTJnMK9v\nrb3gmzlNy1dEy1GXEQ57VwnR8HRZ3DOa3JliNm40c95/AwM2ABDeu/AyQhj5\nZeVmqcVWmKM5cldqXZkjT9Eh+x44rbiKqf1KfkxrCS1uVIjLmlobMFatcnRn\n+v0wNp0FRS4sLdW3pO1qNer+ZFODEGtj40DW7HyV9RVr02DEJIaaoj2BZcD5\nSgF1rmufSr7DnqGRcL1Wpp7QSu1lOTz3j0obsa+9P5iIIVvO2kxXsOnIk7Zy\n7/WCmanMQmD1q0OccfaRRReCG3pHhDIqijAqCYLA/YIubx+NythtYg52/WIg\n/Z8Knn9b8KwG/FQnKd/vRtvO54sVKoiQo2lW2ZzACPbCqmLXHIhiiIXn8GZ6\nYd7RAmIqhJDkYKk20FaLaMpqA/cZq4M1FpvGrTiJqbk5rE0r80VaYvQdqTAm\negc0yTXn/S9antUmr1NCB8nmK2iB8o/yEL9PDt6FoHH9DNBNRNkiW2gHi71f\n6+aoTkbtaUbyfkban/e8C/5u9vjMLVv3qACeWn3U69+nq2747uJdgS4foO8+\nlFQ8\r\n=O4Xu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICSwWWZg78Mlf8GGOJGURs5uRkzr3nm801+kiawW2ZC7AiEAw0oXvAMtRbmqJ5Kcc6yXwK14X01uXg8b7tlf1VupImE="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.519_1599091607252_0.47293069132346277"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.519\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.520":{"name":"@leanup/cli","version":"1.0.0-rc.520","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.520","@leanup/cli-core-format":"^1.0.0-rc.520","@leanup/cli-core-lint":"^1.0.0-rc.520","@leanup/cli-core-test":"^1.0.0-rc.520","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.2","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.520","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-kWSCUIeTBkFsQWlfSMC4f5kwhCe/1QdUviX6uNUWZ9AXyjuYjvUgtrNGAb5RHBIZVtQRnQ+dyQRDxan43viq5A==","shasum":"2868dd5d0c9cacf1ed9ed169fbf9a1b85ac9e1c0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.520.tgz","fileCount":50,"unpackedSize":377680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUDjqCRA9TVsSAnZWagAAR4IP/2ULhKDyV3y73c6Rj2gM\nKba84T4UUdpT1r7+AcqQoNdaiuToQGDsDq5OngkQ2+jU5fhmAWIWKHrng8IU\n5nGYg/tbNwKlGVE4jnfyRTmKSY3w7/I+7YBxRazVlXHCfyfHym/rziNFrp7w\n6XN8pab2+ikKWi9fjYYt9UOev9wIQV8QcCotF75cUJdDOi+K4etwY090N+YE\ncMPnZAw12gfP7CNI/y4x2c7rbUOHDTrU0VKiyjIGSelpjumW1QQu2DL+oTjW\nm8lz2+qlmopfLSDb0xA+kLYQcasO53sVb7MR94tsAvZosGR0z3PsD/FkObe6\n6947EFbHhnA4e3G6ROcpwEFbA6thwm1UV8hhJXEUHsMDg1omEaEKOS9mBMJY\nLH4qrPXYKkiakfEPwoTJrQ/TmNIBR7LMjWbg+g873tiIdxgc0NGIMRIO1YFW\ngsIyQxTICXzHVQOgBvU1VUNDsrohLF53fq7nRBRvaw4NodhoIB/JYNYQaSXT\n6/L849dq+oRa4yi1Sg22Jxf+7jlQSENoJGtfJTUhTyew4nGs9zb2F36c7HMa\nxyMivmqV0gXODOVguR6eV2cN9W/8cRhs0X5LJ8bwu+eKH8raVs3hUmfDQmr/\nAR1058RQtV7VsLwhQzMOW2FIUY/ZBdbMsQeVZbiGomy0NwyKVjLLO2HgMQsy\nLLgy\r\n=IZhp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFzKnPjyoTJhZVH0b5VzwzYtKMrVEG0NRQi8DTUqVQZWAiEAhTQdTXcPWpLtfT/NiMF9c6vFY0nqaqgBDT/qzk3pbeI="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.520_1599092970306_0.29869452353600034"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.520\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.521":{"name":"@leanup/cli","version":"1.0.0-rc.521","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.5","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.521","@leanup/cli-core-format":"^1.0.0-rc.521","@leanup/cli-core-lint":"^1.0.0-rc.521","@leanup/cli-core-test":"^1.0.0-rc.521","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.0","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.1","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.2","terser":"^5.2.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"![GitHub CI - Publish to NPM](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n[![dependencies][dependencies]][dependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![npm][npm]][npm-url]\n[![downloads][downloads]][downloads-url]\n[![install-size][install-size]][install-size-url]\n[![lernajs][lernajs]][lernajs-url]\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli?minimal=true\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n\n# LEAN⭧up (CLI)\n\n`@leanup/cli` shows how much is really required to develop, test and build a realisitic sized JavaScript web application.\n\n- [LEAN⭧up (CLI)](#leanup-cli)\n  - [Motivation](#motivation)\n  - [Tools and technologies](#tools-and-technologies)\n  - [Principles](#principles)\n  - [Arguments](#arguments)\n    - [Pro](#pro)\n    - [Contra](#contra)\n  - [Demo](#demo)\n  - [Installation](#installation)\n  - [Features](#features)\n  - [Structure](#structure)\n    - [Extensions](#extensions)\n      - [Frameworks](#frameworks)\n      - [Addons](#addons)\n      - [Thinks](#thinks)\n  - [Usage](#usage)\n    - [Command-Line-Interface (CLI)](#command-line-interface-cli)\n      - [Help](#help)\n      - [Create](#create)\n      - [Developing](#developing)\n      - [Building](#building)\n      - [Unit-Testing](#unit-testing)\n      - [Test-Coverage](#test-coverage)\n      - [E2E-Testing](#e2e-testing)\n      - [Formatter](#formatter)\n      - [Linter](#linter)\n    - [Scripts (NPM)](#scripts-npm)\n  - [Replaced environment variables](#replaced-environment-variables)\n  - [Dependencies](#dependencies)\n  - [Peer dependencies](#peer-dependencies)\n  - [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Tools and technologies\n\nWe use all tools and technologies without cluttered facades.\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Arguments\n\nThe arguments for and against this concept are documented here:\n\n### Pro\n\n- select only one pure and popular tool for each use case (e.g. bundling, unit-test)\n- there are extensible configuration files for each tool\n- the CLI bundles all the necessary tools in a portable/scalable way\n- the risk to get vulnerabilites in dependencies is lower\n\n### Contra\n\n> - please give feedback\n> - please show us your perspective\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\n`npm install @leanup/cli typescript --save-dev` and `npm audit fix`\n\nInstall the peer dependencies `chromedriver`, `geckodriver`, `graphql`, `selenium-server` or `typescript` in the required version, if you need that feature.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install graphql --save-dev`\n- `npm install selenium-server--save-dev`\n- `npm install typescript --save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | upcoming                   |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     | Material Design  |   ✔️   | proved                     |\n| [Material]       | Material Design  |   ✔️   | proved                     |\n| [Bootstrap]      | Material Design  |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | proved                     |\n| [Sass]           |       CSS        |   ✔️   | proved                     |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n\n### Extensions\n\n#### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n#### Addons\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) NEW ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) NEW ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n#### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ NEW [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n\n## Usage\n\n### Command-Line-Interface (CLI)\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n#### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n#### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n#### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n#### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n#### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n#### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n#### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n#### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n#### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n### Scripts (NPM)\n\nThe following script commands are exactly the same executions that the CLI has under the hood.\n\nUse this scripts in your `package.json`:\n\n```json\n...\n  scripts {\n    \"build\": \"webpack --config=node_modules/@leanup/cli/webpack.config.js --mode=production\",\n    \"coverage\": \"cross-env NODE_ENV=test nyc mocha --config=node_modules/@leanup/cli/.mocharc.js && nyc check-coverage\",\n    \"e2e\": \"nightwatch --config=node_modules/@leanup/cli/nightwatch.conf\",\n    \"format\": \"prettier \\\"src/**/*\\\"\",\n    \"lint\": \"tslint \\\"src/**/*.ts*\\\"\",\n    \"serve\": \"webpack-dev-server --config=node_modules/@leanup/cli/webpack.config.js --devtool=source-map --progress\",\n    \"test\": \"cross-env NODE_ENV=test mocha --config=node_modules/@leanup/cli/.mocharc.js\"\n  }\n...\n```\n\n- Developing: `npm run serve -- [options]`\n- Building: `npm run serve -- [options]`\n- Unit-Testing: `npm run test -- [options]`\n- Coverage: `npm run coverage`\n- E2E-Testing: `npm run e2e -- [options]`\n- Formatter: `npm run format -- [options]`\n- Linter: `npm run lint -- [options]`\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https:/typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.0-rc.521","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Gszhoaya/9a6lFhJKxTAFeHeu5rGT4HOh41Zbcj4nBstp+Ky7lIxvgeZ2SUi2ZkXbhZzFuo0yqtJJ/iUK45ULg==","shasum":"ec26127624bddbd64b3de7a9bedad7b910211722","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.521.tgz","fileCount":50,"unpackedSize":377471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUMfECRA9TVsSAnZWagAAJlcP/3FVpx4rfFuWqqf0MVWV\nSm0Zo5f/m4tmFZCGw2YjFljJayr5LsqmOei9Dl7kaIR6M9YymwcyX/lla+nf\nXm0heRXY3JuigffNTLuGaPkli1dg35aa6Zlc4i32Gy3h2iMKOvCyOjvYHDVq\nug4pPUPNXnwqpdqF/Xsrmy4n+u9Fe8Lw7iCqKGyDnVu0trMaINwdL3qKCZum\nZLxhhrHf47W8dIlibxA5bxyW2ofjdRnLCIl/rsDlCV2S0qQhhqn5bGxEEXiR\nVdY8J6O6vTPWU7oXuXvQF3/hScUkv3IDcWI+H6KqeEuapNmG2qDXOvYjhBzD\nWZ5hPmQPcyb8rkAmTjWfHS93IT1hMnbVAlc00+G2gB5OEog+qndoJfsnmGie\n3yX7LYac9IJvt2Wnp5oD4diaz4GpyqQbQpQUgraM76+HdxoTmPTWptZdvb2u\nPIZFqu7LL6gvs1tpt5jHodXmACVjdFZP6dxoEaHxlolAbxkDAtxI8kl2GjEL\nfwrJMP30W+V07y5qliMOaWLQ1Rma93z0b/LiNSSIaV9iTaJ3axvyxv40JCMV\nQbu1zZdpTqigp0nsUm9FAIjnqSEll41mzDE34ZEynkOCpGZaKZ8MEJ1bv+EU\nZkFULNOSGUCRCmUPi4EF/xo3q2pj2AwbeRfwStllOuu/p64sZYFKWi5XLsIm\nuglP\r\n=cgCi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGIOxnqSXf3Myq3sx5ad0kW93xtaL4qtFluh40DKawAwIhAJaeTnXCKYXcooj8Y7Uc7QfJYeBrUbxv0WUHh+A+SHtF"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.521_1599129539857_0.15809084805476759"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.521\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.522":{"name":"@leanup/cli","version":"1.0.0-rc.522","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.522","@leanup/cli-core-format":"^1.0.0-rc.522","@leanup/cli-core-lint":"^1.0.0-rc.522","@leanup/cli-core-test":"^1.0.0-rc.522","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.2","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.522","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-rlCBNqCUcaflaq3p6jBJqifxftdBi6AKJdOcdPh6ibNdiLEqREGly0BXlbAnOFMKvUFV1IqRGCHrHqgnnOX5GQ==","shasum":"cbb3d443566bd0a2e43323c57f6e69d1275ddfbc","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.522.tgz","fileCount":50,"unpackedSize":377447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfURjsCRA9TVsSAnZWagAAsLkP/1Suuwv7dXGGF2a3V5Fq\n2yXhCvbSAW9chIC//3MglhHXmiRwhEKkebYmuFouYfFoa1iHTh2/r62+tT5P\npMvUhUq1DmVe6OU3vCgkulg0xF0aHlXRk7cmJqYwpaGKgiQal8+Vnje103JH\nbbALJbevCQS/kfF9XspwD61mgUT4FN/5qyyRtUUoZx3KPN6w1ldjxDZkTHSR\n7saWA4XSGXFAHgRkPi34FLkz/WJJpV+NFXqu98lvEbv12LGqvdRQn351tix/\nrok+sRVPFjxwuzDiVXjtOMtlHVolKi9YqtQEp8Uw+x8rCG9k7UYmN/s8ci/L\nfDc8lQmG+uLg7qvlEGdAodNfc36JjCsO7DTUSUp9nRpvjs3J76o6a4bnrTx+\nPIcufYOPcSGe2axra8CK9oTeKdRYIM0/y+iF2fytGp+qzCWf0yDMfdYhjs7I\np/SeDUw315h2JnpEnukTnuutnjLNkdqe/Nf+UGxCKhT1GFlv9ERyqr3FuSBh\nY6Ht30DF6Fq5GWxTPLjEOgA4OXC8GySFh0PaAfim04AwSMT2nIpg1ZTmlAA/\nLGv4UMLITsd8VEAZQmxDcwHs9XHeGCz00cwyxPWXxxy+mm7r9OEwuBLMxEub\njAA7sPNB7MFTM998aM0iqivpMifD2ZJLbCdnJf+DQY/nwxfKHaEkUpmHrLi8\ni72S\r\n=czHE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdEbM40TSG/tHU6bYPSKPJRlbadpgheP/oA2nqxQat1AIgZuTKSHsj/h081W0t8daRx32TuAVkurYes3PTJ8nlMT4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.522_1599150316347_0.6353432323890238"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.522\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.523":{"name":"@leanup/cli","version":"1.0.0-rc.523","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.523","@leanup/cli-core-format":"^1.0.0-rc.523","@leanup/cli-core-lint":"^1.0.0-rc.523","@leanup/cli-core-test":"^1.0.0-rc.523","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.4","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.523","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YN8FUEIhogIaQPlMqr5BSz6DTpIOGklEM/lQCv+3xbI81VIvWakAPxyq+/vTWcrZPbaMJFinezensughrZRhZA==","shasum":"c13048d18cbede030f7f1cdc077d233bcf5a1eb2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.523.tgz","fileCount":50,"unpackedSize":377447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUoAeCRA9TVsSAnZWagAAOtoQAIBoxMaMF6XDvSFOfROD\nGbzdLS7X/u03g8v4zjmYcmG33p4d4QddYqGzoNDvXZt6D2bLceacghnWiNYO\nUANsYOkUFDzM2ZA6Ix8ZYC/lzkKBsx11H2u1EM7mfn/0t+GnFt2i2I9StuE7\nilOKn85IF85kcVCYcaKH5zRyFYEurcIL08dFRCamXYFWBeO1y5KWW17XEMcq\nunpH5A9ivf1mjAJBOk9eltEtwrsByP27iyNoXTG1m1tWBAnrRrxI1hYwXoI8\nyb9YbkzZ8ox3d6XTsfi75ivnHL98KgAoIsdwSOoaWBwLgSxZjOdvgU2yn6V2\nPRg2yv7bGSanIn6nZ6Zk0wfAuyfiaBasWFSZ+wVKjNG38ueT3XS4C8jvNJWA\nvViLQi5TJ8R3nqI9OXmihGu0MIglQp7svDN3dhBzVtLApumJuW9V+J7pIq2p\nwuJrC2ckyg3E2d2o0XKjHxVGOM0AskrFBJ/RQ2ydfnczAEGbqq+tKVYToOH1\nFY+8bJbQmR08M8Ui8QdvEELOlmZwsAIwpFW9fN4gbQHJinUyVh9Cc2JMXjp1\nfKmbseH1ej8fbnJGiuaoJbdWfTZpITg66F8QfpdEsqIshSGuQgdRO9xCewWF\n3/ztAKhJFmD5spb2mxmA16pxDzo0PAlVutwquj9bwo9tpOj1zpYrSl+NjhDs\nsxJy\r\n=eC7g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFaHINo0HFIefj/9vr4bJvisCYlryvtApObd93htPU1iAiBqT7iQ4r9pNc9V0cjIYxAOnwTa/hbNUPqiB8vPgrBmLg=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.523_1599242269986_0.7454576497815055"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.523\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.524":{"name":"@leanup/cli","version":"1.0.0-rc.524","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.524","@leanup/cli-core-format":"^1.0.0-rc.524","@leanup/cli-core-lint":"^1.0.0-rc.524","@leanup/cli-core-test":"^1.0.0-rc.524","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.4","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.524","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PmArOwn/HLQSEcVR2qb6ehG0lJZtBqMHeyO5r+HQqjgbRkYD4jtojjjcKsMf0jXf/0t8z82qJPnMVns6Gqc62g==","shasum":"51b992d403f2de7c6e24b15890352fc694f0e03c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.524.tgz","fileCount":50,"unpackedSize":377447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfU+X0CRA9TVsSAnZWagAAYhEP/38ce9MqxW6WFtKa99px\ntO5KI+SW0qItINX6KxnQThrQPwxCNQFo0seWDscQ7HYM1XRLC4J5GxrLh5VV\nDA8i7/H2YlPVLKZ1afkPIHF+GRcEvqIX9i34p07Hw1C2YBFUrHW+bU3a2UAI\nWeazWCi5fP8QsWixJJcdHDiSy7dEDX5cWRaJKUdky0gCjSoRyIUDdSYJ713r\n8zU6T4P7qvpljNuAXPZBiqwCT090qWvBlVIrlNTeDNhwMBHzcKLS1sbVDdAy\nuc6KP2g49gPQVcgwWN7/43/WIywRagwvolYISXvYE+e2b02BpaK3C6uhHGJ9\nxEAjYxQnjEPqdF8X2bCy7l3TbLxvjypk7mqKqtR/B9Er05biFrt4lO+80g8E\ngzYzfdT4nk/R5gJOuqUu1MrL8bNXGNR8unqN0vcoLfVyWaZ6rxMsGANaFgzH\nJvjHcxC6jw7Cpy6Jdy/T+BRSOCkTVJxyNqSUNDExLwBXIG9io1iwb0ZVEsJ5\nwFjMIofmhDYXS/ULg7AJn/EBmgGXrgzC5krEPc7dGx+bTSAjoMUwRgDKf/8v\nuDRm4d0PmXbe4L3Xp2I5YGXR+s221K3A0+eb0Y8C9qmkdnTmZej1rR2s7iUL\njexTbm8ZlqwM+cZhSfFRv4tOJHkeLkJhEJpfSPuG1ca1e7xGG0dK3U31eY1y\n73Qk\r\n=GvMm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDv6JmEbjbvPM1Jw0IhZZ+UY0FbROEk3aCrs08scBXxMQIhAIagupQR60ORa7GUmLNGI6+6yED71GsTfhyfDtCdxXSZ"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.524_1599333876047_0.5588327514795746"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.524\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.525":{"name":"@leanup/cli","version":"1.0.0-rc.525","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.525","@leanup/cli-core-format":"^1.0.0-rc.525","@leanup/cli-core-lint":"^1.0.0-rc.525","@leanup/cli-core-test":"^1.0.0-rc.525","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.4","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.525","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dDk/m9lrMHsyPXheB5ov0CxyVo/1GE7AmN7vz6bvLvw41Tt/cFNr+gxw0/9wbli6flAQVI4KkkV4lx4XsDL+aQ==","shasum":"165dcd5bc3a814bbe259dd8a8fd9fcac37e2792e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.525.tgz","fileCount":50,"unpackedSize":377447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVY8UCRA9TVsSAnZWagAAeaEQAJlPJm5TZwDo8s5nBWrk\nXxeGGYG9Z3vLWL2nGIzGHVQ3BbMdPVYjZp9DlpIwcy67j2oeKXgDlnbFi+a1\n35QQiJv+ozYl2yVgTkxq9SyYcTpZPVU2RrumRRpbOUrY/1Glpc4qInbgXlE3\nFlGEIHkpjx8BdvzQ44PPJKvjBj0iIXqYat5hbSNLB2TKdmujcLuww+5f3/ee\n0PSfGD71lSBCnf6al5ocgQ2NpyhqOz7y8L6kyHalm0VYBqA0KRc/rouYga3/\nIdEE4+mn8/sOLw70FPaYdNhKuFoMRGXEOREMUfSRi2TE38XcTRq0hVxr9Yat\nvqw/v4fMRK6vuiCcpXFzQMMre0Uq+xqaVN1yxlxtyJuhAD/bLhdw/BhIooQQ\n1BWOmmGxNLY/sHqaurK45QDeq2vTVoGXsmDfFNWb4D9sh7IVJCk2jKYzxjuv\n1ssv6y2Wyqo4kQ3EQHR+KlWEDsM4pFycD+udU0/ZiXtBQfv2GK+sNEm3mcY2\nB5Z2Cr3I/USFY3Ki5Yb6ADJEkoUnlWM6Aaotfj3cDwRmbmCrDupDXLQw+kgc\nhi2FVWbzx6qZaw2wrquf/0Crlx2jw2WfjdjtMWxf5CSVFlGpNf5sxmyIGOhG\n4kT4rj8GECs/BjIY5vdxOz2aLaCD5dBeCFbYH/eZCPpSn60Dfl1pORYP9fup\nKHk1\r\n=ncMK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAOBJtkjvxVveS/IGk2D6vmMbma/EGgKPuGPC6e1pmFgIgWeWmFyZxwCOL5+7Yq6vqwW00mayiwMjqA9usYKmh/RA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.525_1599442708012_0.8430085927684186"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.525\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.526":{"name":"@leanup/cli","version":"1.0.0-rc.526","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.526","@leanup/cli-core-format":"^1.0.0-rc.526","@leanup/cli-core-lint":"^1.0.0-rc.526","@leanup/cli-core-test":"^1.0.0-rc.526","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.2.2","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.0","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.4","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.526","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UYvLnlKfI72i1or/NKOgvI8uMEuC8xoMme7ZPe5Fq4NvSDVonk5U1cKFhzpztVt4FZAb9teuzoiNYZJM3vawDA==","shasum":"796d46a5ba313ab469c16ea74a5e2f03ddd36708","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.526.tgz","fileCount":50,"unpackedSize":376948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVvAiCRA9TVsSAnZWagAABUEP/iAlX70SaaUBI0ikcNTD\ntSOA6GNZpThLtLZpvKwJAfFbSSdWOARHKpFz8IYP3ukrpifMCLZyoKMCObAS\nVLVEfPEBV9c6io38IjckzVazEa8S/Phhyp5JBjJQgNCF+fKT2ysNon9YUc6z\nvnXB5aE716/C5HGrJU13spTjUvspcwd77fLtkqzJchL0rp0Be8HI8wWOrXin\n0PvJKFcSE0fvlVRQdfmwK2Bl0XAYEntpHnHZm9L7e4JqKIsBsPoUDOD8KUTk\nC2PTbxnN7Su2mcHS3Kgc8wBlHkia3YEpzVHiodUQDGEzF0ZGThVrNLfU+7I4\noTXAptDeIm7hWAeHnm1a2FMeKFbX5eT56sUwaiR/cMFAwSXco7ZIswa7dvLJ\nr6lB+zeYEqsF9U4xFcD8PsfoTucBHlJ1A7uRsJ/PGv7ad+iutx9IvRjfcp8c\nOK7myJ3OPIQenGXAzb85jPhr/ZzSOZHl9z+C0niAgnhzOFfN3H6mw/ntaITh\nGFErApI2qQPFuvMy/RR2iUVUhEIboGv2NHWzGJlZGf4HZPR8gtyFeCLsO94F\nFiXs+KXubYRfy+9SYpIDGWpTblBDlTmnLAwGC3XhbHPN97WhJSWooSr2G4Yo\nGCMIJKyUSP2hjYiMQpDiVq9tisi/LjudpRbgSe5wcGAvZK1GEF4RYqYD4z7u\nZJd7\r\n=HuYA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOb9EK9QNl25pDesjSmRt4qG/XnyXmYy2A/FV7osjr7QIgAW6rpyRdeSCXY2q4tb8VqgNbGhIYttsBq7f5K7HUYk0="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.526_1599533089575_0.55050827571267"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.526\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.0-rc.527":{"name":"@leanup/cli","version":"1.0.0-rc.527","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.0-rc.527","@leanup/cli-core-format":"^1.0.0-rc.527","@leanup/cli-core-lint":"^1.0.0-rc.527","@leanup/cli-core-test":"^1.0.0-rc.527","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.1","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.4","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.0-rc.527","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-YC+4gVgP6EG9A/C5nbJ+kx/VdNmD5VDUEvoopOSAzFj+PecNlSs48iMaYBLsX1rrxbb8vKyWtkvjUnZr15yUrQ==","shasum":"d2940a1bc5271f60ce5dd451fc83e6135f6e3db4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.0-rc.527.tgz","fileCount":50,"unpackedSize":377253,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWD+hCRA9TVsSAnZWagAAllQP/3FjidM1NvFfTBOkXI/A\nTwvi3GuSDvSOiESjG+NI/FX1xGAUIN3yFjeRpYj4q3Ehs77r03nxvMxjPz/W\nRO1NVXOHrpnowjU5QHLp4BgT2dC1/Uj29JNPObo6WVeqARl1/FLwp0PmDz8F\n5sja4NDTvUVZ92+XbgnAXXFId5aILA53e92+oevhK3iC6pdnZDjbtBOxV3TL\n5PbfBQPfjtjkmObRGHrMemurElpeAKMN4cp4Ec0Qt34OG2M3qmPbFwAudnDH\nhArjhsSHNrXwfvKqOeDjT6Hqy7DSN9dFMW+H31mCFCIU6Thdz8LcJWhgUGW8\npSmYnGddcylrcN0/xhlUYOK9hQgUiABZ4vuNaY0jUjB9pdNzp/OWXJvUBI9f\nhTqTH8AhpttxS7FCVqX5W9ZI9q/o7ae8DnGCSM/9jl2TNHUyb2DmS/xs6/U+\nDV81JK73fH5ISzZDLLV9Sob/CoX6JQLwNjRnFoNJMnOlWsPexO2wxTpf8y/F\nerw/o+IxjsqXOz6tLof6MpkrtaicmSHtqFe1OauxUR0Qum4rN+1iHz8mhtl7\nE3oBJZ1Su1DKR+clv0qdoSEhD6TAn/+H9GfkafX5x5JHO3xO9bJqq/oGgCSg\nQLUCYuKsc0S7uSKZBVG8HhCHM4Ml80e2MnV7dzO0/80oVYuhENo4Ok/wgMuy\noExE\r\n=A4H2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAi0m5o77D8CDr3bQwCD7qpdGGrmwz3PkF84i7/4DPIsAiEAs0gKqUpdFCn5+TnPR8pQ2OEF3sH+4p/FX18bM0hDb1k="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.0-rc.527_1599618977151_0.6221906522832936"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.0-rc.527\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.1":{"name":"@leanup/cli","version":"1.0.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.1","@leanup/cli-core-format":"^1.0.1","@leanup/cli-core-lint":"^1.0.1","@leanup/cli-core-test":"^1.0.1","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.1","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.6.4","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-lqWGY4c3BLSH88toHfVIrIUuTps1uV9oa2oT0DvPy7B5xEeVNzZ0QT7OoNoYeU6+yWeBsOGb65Ky447dhx2Umw==","shasum":"56f58c102e1736f96058149677eb544a14cf24ec","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.1.tgz","fileCount":50,"unpackedSize":377218,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWwgwCRA9TVsSAnZWagAAP4kP/1uQMzyrV4EcbiJz1juT\nXw+w++LBSTwAlcfH0vS2HDLO93DPoIqtp24UhhMg1iE5QTscWWbKOe0moScm\nMtPuxfESQ4+P4cuz1cwcsy8Ddz/eIsUk2M6xXnmJaWI0HMOp+SvGeh3HY7Ce\ndBUo9xODaqPbD3gYElCfhQnB6/zwqHV9yqR7b6pMz1BGFbfNkNShtlW5Fhdm\nxlUVRJBaMf3P1ok3/SRPqzaTFIPbiZxAA08mEHA6sEgToJJH3PR2VY9bI9wV\nNNV3HJlGm0qvLGZ6815FpNLDaNyHv/qeTG3DlK5VR+tB8kd5Hyp1xnAU45gs\n6CTvdXv/ZWBrvORsWrMqsd38tmzmY7iI8kjvD9Gsn8OkKDvZVRP1J0W9CGhU\nvyyerucZbKYw8LxwasPxI+BnL+MrspN/ExgzZskDCF07ZUN9llKHgQ0ux/3e\nexFrrMXwJtyiG0dQT5c3FzMlVNrk2+V3NOBrGXMFayFu5GPy4FjaLKaIIN8i\nr+jnTwv/OUtoJFVP/l+RBVrVm2+xXEC8pUR+ZlFB92dZqAgC83J4BVwXPdv3\n/YDtwLXzlp10Tl1KdVdn0U0SK5jLwlskVVz3lJMc6RKfF2QJOhCBJn6Gn0xJ\njmQsWdttKUssh75P7HmpSiQWth5dfUyiMHA5Qe8ow9lQDQftMqczkwHM4YPo\n/PdF\r\n=JOZj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHdvVK/34xtJMX2Pg/ymSMi4owOXYbzSKZifiRd8/5pmAiEAv/3HuVYDBCiezR/TjHKWaYqx2uupH7VR1iH9U5/jwZI="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.1_1599801391940_0.45987261211011154"},"_hasShrinkwrap":false},"1.0.2":{"name":"@leanup/cli","version":"1.0.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.2","@leanup/cli-core-format":"^1.0.1","@leanup/cli-core-lint":"^1.0.2","@leanup/cli-core-test":"^1.0.1","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.10.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n<!-- [![https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg][https://github.com/leanupjs/cli/workflows/github%20ci%20-%20publish%20to%20npm/badge.svg]][https://github.com/leanupjs/cli/actions] -->\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n<!-- [![dependencies][dependencies]][dependencies-url] -->\n<!-- [![peerDependencies][peerdependencies]][peerdependencies-url] -->\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/martinoppitz/leanup?path=cli/core\n[dependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core\n[peerdependencies]: https://img.shields.io/david/peer/martinoppitz/leanup?path=cli/core\n[peerdependencies-url]: https://david-dm.org/martinoppitz/leanup?path=cli/core&type=peer\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Yan2jnQ1XFhiLqJ/TlcWh5G6N0TkIW0dlHzhUBW6cH0tKSKzHlGKRNwVFS1JdPHs52uxOCejBs6M6HOHEAQprg==","shasum":"be9c23d4bedd8b307b1dad6f8f49d537fa2850e6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.2.tgz","fileCount":50,"unpackedSize":377219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXawiCRA9TVsSAnZWagAA7lAP/38i7fqqigmeTlYCstUo\ni2qGMW1P45YLDLJipuViO7NEarMD+G6ks4Ouk1AYMsheK1o+0tO+ZYmQaFaJ\nJ2qr4VKvTfBtWXlYQbUhi1MdIJIybIC/rH0vdFly5MwVt8RY6Cw9BPrPhxZP\nXIU7lpy+J9GQDPVJPL+vXXxtCpkRLNqviwMgDU1RU7xOjeISPOtirGdgRtxt\nBC8VUofd/tHK1KPPWVfJ4O90PmKwm2cg0rPVs5SICToWKzdGEkpZ27P+Rtyl\n9EgqvIqR2VBLaMoR5G+DnPxvHoHCsJ44dyjLlWLVKmZwa4YHGldS8m9owpEq\noI29NzXE/ivnqc6g9s0OARO46URHF5KXAWKbjKyTFIvqgTg2FDzhJ4Yw0SCW\nvjZtXC4NejAz8GhTAZjvdDZZh+5T74QOUrC7NoQjfdLFkkUIYNwsdC1JprWf\nG+FIuFrlTLsGkU4OEq3vZV8w5T8MI3OyuDr5svqWfGnxuIX7S5Q8m+a6OBnR\nYDSd8xecb9Q3REQQO/s96ibW168N3YOJV7FVZeMubehhJ2FuyVWhrSTGNbgu\nzXk7Vqjoi4vqRvVqnG8xR154ITRdshuXBqmhiwWcXmCa7bB9ZquAkQbyfNEx\nxzfUDs6E5SEaxpXtRbvQxAZKxYoAVOhGJmuhYPIVvqSw/oVnM4jp79Svffy9\ny8UO\r\n=8G/2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjzyIJjHqQpOgUleUAxYu/XQto8jhtV42Vub4MZ6+2TQIgUB71dZPR4azKO75hbYYNQfjgr7wMQ6EPzHPJMv/3OZg="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.2_1599974433787_0.15983271335490645"},"_hasShrinkwrap":false},"1.0.3":{"name":"@leanup/cli","version":"1.0.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.3","@leanup/cli-core-format":"^1.0.1","@leanup/cli-core-lint":"^1.0.3","@leanup/cli-core-test":"^1.0.1","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.10.1","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-a4fs4PK4fHSpc0j7Cnu+WI2WE+gR2byGVS4pLdv9UN+rsADDN6TKaCqj4ore1fUlX7/7wibdfH3yPOQTRytgbA==","shasum":"0de6536e0df049e91833997a2123e0071eed6b0f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.3.tgz","fileCount":50,"unpackedSize":377633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXuizCRA9TVsSAnZWagAAN74P/1RBKxnGgYlFNAwtSEO1\nctWpion3vWlvljOuOLz4osOEjuh5WtqMU86IepNC4x2tetjGUJ9cRCP5IwWq\nRKF0yW0jSj8VnisZolUVHlDFJ3eePMoIlAFZjRBZiRM6NtVmRJ5e7mpTC+k3\nCfUIacK7n2sZizsLn3AJxyxXOmrQMvt7z9gkn0Dpe/tJH5IX7DAhMfC2cJ9J\nS5M5v60JZZRO/tXpgcsjgphBiy85BA+y5zkAyRwS6mOjG6+HuTmkyDMUFpTZ\nrDgcX32rczBOiAOWQWakwc4cLS3PONvM46eFJBCdEv1a0fQDNItwkAAXL5Wh\nG06B44MBS3xWNjOVcu1UAdl2R8M6scuaqGgYdgCpGO34eUpZ8tuObLbU0yuw\nrdF/MuHqxZrVYUmf/L6oYE4pR5Zkph5zxYkisXV1t2deUUYpiCggemv//fWE\nRWZhXE5ZQ4CsoKaKHQ/070nhaZ05edrFlAtKz2yPM0MYBGWp8mIN65BWZPOD\nUmOzzcI8ZYqeSFqNRNemg4t2tjk/5ogzxxM/75kj9avjxqvysa9+OmJO9Jag\nDH6KZWqedBlv3N2xG/hwxaZ954jgyOXQ8vjsPgP4bm9XHCU6CvW5Uyo4f67c\nFVv/f6NEgIuq2IlPBHQ9+w22mxdatLHnCUoRGBWnIZp9h1lX10IO4YdG5ds+\nxxcL\r\n=Ldfe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsH7pNM0KL1xzDu3AQVuaanJSdUlDzw2fs5isxhGLSdAIhAKUwK/DEomB2/BgI5kKfB34s3lKciC7XJ4KHHss0ub3u"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.3_1600055475281_0.047359023468631634"},"_hasShrinkwrap":false},"1.0.4":{"name":"@leanup/cli","version":"1.0.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.4","@leanup/cli-core-format":"^1.0.4","@leanup/cli-core-lint":"^1.0.4","@leanup/cli-core-test":"^1.0.4","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.10.1","tsc":"^1.20150623.0","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.4","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-Zx0cnBeV8Wr0XMTu8K3YNx56XTQ2Ei6hKLYKYZQvRDbt0w0L2f5btVAPhqBZzB5fMewNAg/egPjpic8enn9iUA==","shasum":"e4a3defcc11040ae8a48c9afa7b22ed11b525b4c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.4.tgz","fileCount":50,"unpackedSize":378623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYHX+CRA9TVsSAnZWagAA2E0P/R+b4zK9fSTNH7XrTa0w\nQ8R9LOjVRoVdFIH+D6p9zB86r3nKZG/kegq7d4O2tMGvwuy+D7TVipp2Xkop\nFZcO/7WXcp6K79KuvntIULcbaEpKTsML2gE8aCVVvRHKT0KKkCEwNYlG7Dtv\nuX5FDOti+NCqBLhukWorMxgmoPWxEB6TB6VoWWjHrB1XVtOIRQqhdrOMLjQs\naL4kGpMtV8SFIlOF9U1Su45xrcltw494u6a7Fp7onR2DrHWZMrDhTfCF5c9Z\nVE+ZiQCIxheE1+KlQrbdgPj3LaqBZ8UXlN4gKgxH6urwLLs83fxPcQYSpoJ6\nkZKYFnwSSjmzWQVTiqRbghp+wIMwLl45xSGKArU1kT77BG3zI/wW8IfdqMyY\nRlNG/NYbxyGlv194MdYjP9RlYXYiPI0UUoRpeUM3vCUGlJmaUZnw9fAMqr8S\nxoef/7+5829vPiukj0yECxyKsaN4vd67ofVYruqV3Td/HN09FECI5pbRNHly\n2UuSD2c630YMtyxVWJGHTQMNWs/niayjHZ7XltVOFh/4O64RmS93kRnb98oC\n2L/Ce1ZczpyEkI5Zuq1aG05uhiaRUR2j/w2fUeHi+gEWAhgdG2A9tx5xhPMm\nXGqhOsq+ZpBmH8GlNHvD39n8fdwK1CviZZT/YA+9mXpDiR0HYGIEURaFaoaE\nf765\r\n=9wYT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5+Y/yVY3Vi5dDYinRY/m9auwxVz5VjaxXvN+5+fEZZwIhAPfYXQlNbLzCzJZqa+8KLpQ6nAe/8Y5Tn0NTOrw2sLGD"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.4_1600157182168_0.02333826440674791"},"_hasShrinkwrap":false},"1.0.5":{"name":"@leanup/cli","version":"1.0.5","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.5","@leanup/cli-core-format":"^1.0.5","@leanup/cli-core-lint":"^1.0.5","@leanup/cli-core-test":"^1.0.5","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.10","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.10.3","tsc":"^1.20150623.0","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.5","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-stpw7CJw70Jegwelu5HZizOmnMOk6jD9bj4lAe0yu6rUKkxnPtPqG2qIo1sUoVmPZLdUELzLRmtmj6Z0S7NPoQ==","shasum":"6115d01939b9edebbeda5799a72d7abb299c2537","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.5.tgz","fileCount":50,"unpackedSize":378623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYw6QCRA9TVsSAnZWagAARd0P/jGFib3uLZuKpmK/dY21\nuDB+UkqeXjY7pYAJ9IPQIRYmr1tQew2EQ8UGBQkbiCz3aOcKHLXOxfg+4vOq\nDkQTn2ejvUD5lHkdZ1bFy5t5vtVhmZ0s2bbyG3Ex6WxdMuid5rc9YOG3KzTO\nd4B8uXa3TMuWFLkofMVLTM2BkPfJU4weTACpJCwFYrB8pSArJmMnqsjEO3kf\nphJJzNuhjU+UNCgU8G2WeG1Aww3VczvThWivJ4zqqRsCAx0XW3lEsYbLrzcn\nnv56FwEJSEF9A4RHG7KzRWohy2XYnZu68KHGhL9JYPA7VH5xzZQx+j9qWm+Z\nd6ZEWNagp56k+dGhR++Ph54fJlP7H9yZ8XbqD0EvZ4Urn8ISoFOBJmNJM0Tn\njUX5vqjcaesk25HqiSF/Xv14XPvGz+G9Xk4omDST3TtiufVsi0xKU6SSIYhx\npRMi364qGOSgi4aR48ms4K+7Btas+9h6IBINu5SnLmCit0Pst5Ck+84pQQ2z\nf/CDRpU1hNwL5bJ8EV2VV/PaC5or69rsy2amF2iRjirYlNQYh3mU2XLRSDmP\nkCwIxwJcS6V41KfsjdSJM04CiU1xY6VKuuzNzoFsvbM0INd8Cv4YNRe8bQTn\niHRrT2J2ArnXjN0amtC5LPZZdHR6cy3HU6+oR+E2/7DS3qPf2IfAoHf79Nva\nz8Dr\r\n=s6FU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDNWtO/FAd1larP3DZzolYGcItAQaVgArdlpZfy052cAiEA05+hcnrdQp5WQT5+HOo/M9oExUn4B/cM7ZSbkiuzicg="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.5_1600327311663_0.9106782515630998"},"_hasShrinkwrap":false},"1.0.6":{"name":"@leanup/cli","version":"1.0.6","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.6","@leanup/cli-core-format":"^1.0.6","@leanup/cli-core-lint":"^1.0.6","@leanup/cli-core-test":"^1.0.6","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.1","tsc":"^1.20150623.0","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.6","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GEmbFPMLZP/VBe51Ir1NGssLqZv62tzPn5XuEF0XakVo+iy4LlGQlKR5KUsFJ2hBowHUDRNk06E0AsU5oZDEKQ==","shasum":"9da6b84c4dc8e92b7010857c8988541b91b9fec7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.6.tgz","fileCount":50,"unpackedSize":378512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZDGUCRA9TVsSAnZWagAAUEkP/iV4nmCqHR6xEaOLUkVp\nQzv6WPsylD9j8rEr7P5CwhCIRoyLRF0tcZ9uXmC+6INVbFN8uJP9CUrH1Ifm\nFECcLZxS9iALqP3gVL2Nhaf7aEMdWHr5d41R73QhNW4KR7KVIoiteL8Sktwo\n+PQBka4BttO07LznS3R0fcoWUdWcE6b9f+2z2zL8WGnJfTWfa2kqQ+c2eEhi\nKDXuMaurBfqiOPggDSr3wKjZjrGg+qYuTb8futLOxY38fm+VyQww42BIiSwY\nKDBf4+lWoCQ5Wt95fhufu2eVyyU1FB3pUbFFM8EcK6jtiAhrWd/OG6XLNipf\nLqB65+ej1a91hBesPAZwVoq6x4DUdV7WvuiNnxUysRj4SRETvGggZRsq/dnl\nsIXwW6dsdPgOSzeC07pdD9+TiMzVHAyU+SBl/8+WXcQtpFjmVRaAvrseC+2+\nwfFOAHULFOK0AfjYAfkOTkaT1WuBZlKYsZ/hwuapMWRdP35XFUE7KefMk9kJ\nyy8dCZvTZV7rG1vKWQBbV8vHiRWVWfBG5M2QzogzADaRAJ+6r/92K+Ob0Cij\nBEKwh+abnOtqS3+JfCc1RIYznHNBNhf6obk3ZjtYb2kQChBvg9w5IJ5LKuLu\nypa7gwM5usJNlDVDLGKw/3ivKBoweOekHt1LSeXbmEmTo/omsuELJTJyMI/u\naYSg\r\n=RnE2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEUBYXDSV66oJ4lvyGX/ctq/Qtv5mY8PxlvfPxNOVkIdAiEAy1RM44ThbvEpMhSu+7PFKeBpe3rZI55pL/Ib6Kx3BX0="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.6_1600401811998_0.20796721696512588"},"_hasShrinkwrap":false},"1.1.0-rc.100":{"name":"@leanup/cli","version":"1.1.0-rc.100","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.1","@leanup/cli-core-format":"^1.1.0-rc.1","@leanup/cli-core-lint":"^1.1.0-rc.1","@leanup/cli-core-test":"^1.1.0-rc.1","autoprefixer":"^10.0.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.1","tsc":"^1.20150623.0","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI*</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.100","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wmMjmVM6NLcbQAIdWhvGo45HiUyHmJYij7cyLYvAvkMhy5ubWkj9RtQ3kbh+ZrsCv2cnOyeibP6ITpSloSwnYw==","shasum":"38d28811f2447bd5431cd354e817e073e3b0251d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.100.tgz","fileCount":50,"unpackedSize":378541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZDGmCRA9TVsSAnZWagAAmLwP/2nmtAMjBQ9BvKnfsg/y\nfRzqM3+IHD1YSKamUCSBrVttZE0nJ4FEfR1BGUS8jVQtdZuC9i3XhiTDMdMz\nOt4Bp8jsITJIIpoGhKGFDkzQrvxKnAUWW3Bcf+jGjTyz9bqcygZFXnHxvg6K\n9844yOOnproeQBovJd9HVDw6ENB67j730ZlTZ11tqSN5XnY2NBCPk7QIjjid\n0i+AnO5fXBa40jD/fDCLCCXZW6huId3MaZ+MU5phI9EtO2pH5ytEtv3y/1MA\nEmWNoED5Jj+Q4u6yfIrcG2ukpwzDujASEQnrLNrCXOGcLO+nVGVduGzjVqJN\nPjdHiqoqZ07ALPY4qCR3sCRgNvaEnhP855Rmpu8BFhDQRZzVfpBIo5hF8yge\nzR+i9AyqzUNSpFeN1dRSBks7FUFbtcd/fQLcCw2vzu4nHuNRrGtDFbYOgfuA\ncveFqfOSvCKPvs/MJb6QRBMFE2b5tSebjOJDd6LnpB0tFEQ1ZROBIzqdVIEi\nWU74GQz/3ck3yXnnmf4XXWDb0RZmrHcnptvjZq8+PuWD0gqk3vw/Ku9X3Xl5\ncMj4HCfscOeLDvIaqAUDmCJUwkm4OLU+yxkvA253BY57gSpEorTZjzlkOdQm\nnG/woQHjNxXxc4Bjm2HcgGggrmI4/HFcFyP2v/lgte9/LeufSqrMm8jFCTLf\n6QDr\r\n=1jxs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDIQJMWqrybQT7SD+Q7BUegM4dUC+GHEngIT7OXloLSwIhAJMhQOf4d9qwZCOp4tPiYaKu/p3kASSignWTOUPK2FGO"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.100_1600401829883_0.9572498146887811"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.100\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.101":{"name":"@leanup/cli","version":"1.1.0-rc.101","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.100","@leanup/cli-core-format":"^1.1.0-rc.100","@leanup/cli-core-lint":"^1.1.0-rc.100","@leanup/cli-core-test":"^1.1.0-rc.100","autoprefixer":"^10.0.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.1","tsc":"^1.20150623.0","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI*</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.101","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2LS+tpMg1ypzuVDuqkAEwMy8DNdWcEhGiJUlZDpx980Wwk4xGlcIKXiik6wRb7hUjFYTl7JnDA/FWdyH3yw9yQ==","shasum":"919cc9afe07eed586f0496f90e042a82f061197e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.101.tgz","fileCount":50,"unpackedSize":378549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZFIICRA9TVsSAnZWagAA7pEQAKQhaAjynzGggUVOg4Bb\nQ+hPytove5BII4J5XGYxm5RQoP8DDbTwB9iliZmuN2UCfI7squPB7rn9pqrk\nYADWWTGqrIsTpz9vk48DzAfIdhy4FB6JKAxORLrEXfz7dTC2W5zO+7bL49/9\nXtqUesp5yXC1EH22h9Vf1YLK7KP61Y1UVbSa/rZDKb1uq/E4i8KrOBdjpRzg\nP5C+eDJ6R/o6/PnKAZfiJYtIMCq6VkZvDX1L0KqTLHuWrb/3EAif3Y8t8tjR\nVkvKYtgPPBtBvrmuRcikC/VRAKXBuAz/Wbmwiqba6jzNx3D5H3SSvv8kj9pg\nR1Ml58ujcOK7jpzF38z8Cv8rTg7jJ626+eFJE90DwMMLQHrK1IAYX4bie+oR\n6NWrvqXTry6RKdaL5/GqDKmjE/Oc29px2Z/U/ksQfN8LwDQyB/QOfq7NUz1o\n3rmt4RCZwdoj9TIrXzAyYuZ0xrHLs5AbzeMCLkt9fOHvm3jq86VMJwouXTPA\npfDzJTZKsuQ/PPDaOQCSoCF1Y8YPqNW16ATg8WMDdyD+rERdkuEoC8T59s+4\nn5TJDGafMuzvM1Wjx4WgUSd1GXhYq4NOYjw+ZajF8gTp9KEyW17r4aHdruun\nIJlm3n1aQyhtsA3vkSxkmXaQpbUvQgeFc0PyG2VvgwbP5/v4gOm6ouBOmBUZ\n1H8f\r\n=4JDV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQnW0BsNbpFjbi3D9aksB5Cu/xdhPzPEeA7WGHmdQzcQIhAJ+JZlT/yK+CtSMgj/27302J7BRkVUaHSRwuTl47djL1"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.101_1600410120340_0.6426461882877825"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.101\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.102":{"name":"@leanup/cli","version":"1.1.0-rc.102","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.102","@leanup/cli-core-format":"^1.1.0-rc.102","@leanup/cli-core-lint":"^1.1.0-rc.102","@leanup/cli-core-test":"^1.1.0-rc.102","autoprefixer":"^10.0.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss":"^8.0.5","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.1","tsc":"^1.20150623.0","typescript":"^4.0.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI*</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.102","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Cg9BkPlxcWnFmu2JuX2vmr9snPjFv2b9JQ20jTnP3xlKGi8Octebqi6XQXF2zufMag5RxI16Bscn0YTZZxKxtQ==","shasum":"3b147d935b4dcbcd50895b0e30af43d5a36b0622","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.102.tgz","fileCount":50,"unpackedSize":378470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZG+iCRA9TVsSAnZWagAAbe4P/2KTaH/axjmweMHCORvk\nxkIQO/nWD1rF3OJa+uj2le6xDxEPLTkX3YnIXYkKBZL1DRQYS7KF08zCcTTy\nL45+5uZCRHPLuXz5hydpVIjHYUDghjTXXvtrd6iq/JNHRCZmRiPZAuGiUh3V\n1bKSU28gbaXI6l6k7Nqd3BfhAT5Z5517qBUTRLcKs2Cx3xRSwmA8bNSGjx76\n5di/Po4bZ9YuHTxVihCTQhjm+k10HF1KKy6iHeqNfLxgz8Dp4TzQidUSt+Mv\nhlvtin7f6w/DKfvJzNlXs28ixTsGhR1ADHQggtIJ0JgLBgos2C6f0AaAZYR4\nMMbcNfnBIv9qnFkSzJ0LTBETUqWgKvJ9uBbL/7pvqAQI3GxTWDJbmFYkgwpJ\nn4weux38lRUJhJjV1WCEu3H0Q/fp6TOKJ18uHjALuroVoAEPTiZbBHfIPdrP\nb5yUvnbkFH/LymwqbX/iiDgmODak4Y8kpdQ+sJzyGsWfNhgtF7WxP309W03h\nndmANU2yz5FuyRmmVVPvZ31AGUtvednqsTL5Rra6OqkdgzYBdOPxN1oTOpXb\nOUpZMmAuHSvj+8YFvKMyZ4dnOaAzzxz3ctLYktqbiy5D4ndQ9hGoO8dbnImI\nxDkYbLAX+uB9TXWgA9cSpi/XZ96UIhTIWIFbcRbSKY2OifwHpj+ZLemNLqbW\n8uDk\r\n=E3Yf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICXKX2eWtbM/VaWOxDcZ5m4VlzCsSD5b6luqhY7pZhzzAiEAvpYwMIUqoKfZOmv4RI5CmNx/81BHMMRQlqcBV6UMuI4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.102_1600417697879_0.4921835702117827"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.102\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.7":{"name":"@leanup/cli","version":"1.0.7","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.6","@leanup/cli-core-format":"^1.0.6","@leanup/cli-core-lint":"^1.0.6","@leanup/cli-core-test":"^1.0.6","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.1","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.7","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-MTTccsC/WlUumJ3f1Tec3Ebh9q5YY2mp4iyzE6XiODQ1yg10ZXaSE2H71j7+CmlIe4Q58wj9v62uj+994kLulg==","shasum":"d30f9012453e100542a8895ebf6849eb761e0a9f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.7.tgz","fileCount":50,"unpackedSize":377904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZY/mCRA9TVsSAnZWagAA6qkP/R+O0kJHVcsE87BxbZdd\nGgfwC3CwFH4kIwFnRFNtokdUdSeWVV6xdvVSGW/jvENiETKaF6rAVMnnULAA\nSsW2kdBD/PuQNxlwH3SXeiFqiiXMMZ1scAZFRIHmlmQtrJDmqkMGEtZ4fsTb\n+Aosz++bCTnfB8p/tMFy49RtTe1Px5LqXl5vClzi7QVtvv3KMbcp4pSylBY8\nfRFH8U9sWgcvjljnXucJEdULM5tfFg5KS3973AEWCyBfJTvvbTFg51ZrlTHd\nlN4Bzs8Lk7yZKMOnKddx97zDaJAmOHD9nv9EsnKMwufT2CMF1lpT1S1DCADA\nzXYB1bZQMfRWFhaBpomrVUAt1UAo9yFg5Rw+x9oBXMxB8+rfUoSh29amyT//\nDw9FXt3T6IMjtHk1auhGD8a9QTB8mEYMbTXHOFFkVLhcO0VLxc+tS3KxBIJM\nAsForHASq0JcQOKGzVcQ3AMUFhYIipl7M6RhlnPCcq9fQFG8nwqbuPFSmwrp\nPz8VhZ/JR4b8tiIkAoxCfF4qMtvc1OQoEdsJp/6SYuhXq4Dv36yNXf335/6v\nhORczWSkqIs4O3N2vm00//fPSXLKFMWRaAl84F9F0VeD+PgOHsQhoS+PJIOm\nFdt0uk0xgZnaSoloPby4mI2j4TeKO46h0CDid+/ScS+cbMfv5YinOtvPn7kx\n+wsf\r\n=FXzJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICcNHe+7dZ0jiFg+DEr/OPIAdnUsxR/J8kSzMeZ/D9MYAiBEpPwV51c4XfOzA9o/ZcaX2qqngQJzbZlwf4euBjOjVA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.7_1600491494248_0.9964733564263464"},"_hasShrinkwrap":false},"1.0.8":{"name":"@leanup/cli","version":"1.0.8","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.8","@leanup/cli-core-format":"^1.0.8","@leanup/cli-core-lint":"^1.0.8","@leanup/cli-core-test":"^1.0.8","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.1","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.8","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Rtn/Sebm6/RgYUgYUavIx8w51KEJR3IrChXHcC/6caNFh+972RPu9xfGICUSyLqdcry/kJumvQyYWk/fJosCTQ==","shasum":"915aa3a5edca2b80e8ef4058537263589e57711a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.8.tgz","fileCount":50,"unpackedSize":377904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaWfpCRA9TVsSAnZWagAAFywP/AyZC9XyOxqGGQ0W2+Jp\ne3chy2TFOMtoT0hTuasGPEdVeZcltfEoCp3Jk4lR1W8LYXAPA81Wg4I7rpHd\naxDz9xhi0xBE5xxTQqPUoBedYkf65YRtnpZEqR5JZNwBJjJKB5VMn68gVYIG\naZZm8UAAPqLXUMQD+Y/uxvFm/qHndok77Wg3LjwCxiSupRJ9v3AkYjyiPWNu\ngRH2dfbHbs9H4ORwVJfpxze9Se8rGlNWQyBL36VjfQmsNq0KaDDCjbWrD21J\n/T3cCR27eDJWozqU00G+jfvG5mF2iWtnk8Z5AkKED4Q/LD2K0DvwqOQ1HZtu\nXDAxI5g/IGoT85Jh2eJqVESNuknSdcOOgCeRyPFoXT7+qyM7GbdlUOvXnre4\n+hqTEwEdQc8XyH+RQLrQqxgf0FpwQSA3DdGzZGBzWKMasZYJczALvW194acM\nfLMqdcgpGYxeddauTnaVE0kD0dIkPMwm8LyrkLxZ2g95pQixk4PsA3ULzcN3\nzUTSr1BhyfwimwikdmQJIHbHZV2iIB7/GcCW2Ee3u8onW0yYKDeOeEdVfp+s\nkDWUH3YMyJnIZXDDk2doBSYrDh2OSVX1Sdzp+zIVLlpllpFhLi2PT3trfU8V\nODnWsyPUVpCR3VLeTXkf3c/dMf/DOzCigQ2S5+IoBC8G8HfX+8665SeUw6cl\nuBGy\r\n=awkt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICxOtBVWbCshMXJtPHV5yoCGy3czPq9HUsH5AAj53uDTAiBnRKBuZZtWiv63SwfXloGYgE0zhicTCc8q3p+hekdGHA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.8_1600743400453_0.6154940656026695"},"_hasShrinkwrap":false},"1.1.0-rc.104":{"name":"@leanup/cli","version":"1.1.0-rc.104","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.104","@leanup/cli-core-format":"^1.1.0-rc.102","@leanup/cli-core-lint":"^1.1.0-rc.104","@leanup/cli-core-test":"^1.1.0-rc.102","autoprefixer":"^10.0.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss":"^8.0.7","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI*</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.104","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9vr6598eHlW5GN+Yxt1qAKIk0tFGaWzpJGofZG8Qqu7qdtaWqFpiSxzgxALQ/3VC1wUQoxikl6kXiPbsT2JSxw==","shasum":"37fbbc0867bad19e0e09e53e9b9b73d6c1d38ace","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.104.tgz","fileCount":50,"unpackedSize":378566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaXJbCRA9TVsSAnZWagAA6/AP/Ro4pHOfOMSwxrr9Y/QC\nm+poBmNXkWG11IpNsl77GG9OYZqt1zLYsmbO2rKgCBqP3gzx5Z4hQNdpIQcE\n6NM/DEvrrm9GPW6Duk6FuJDlrg+d6YHynu30tYgKOjV1V0y1oQ6Z5fCRYQzS\nfPAuBwkIjvQGAhpeALIA1BTudEQlwuB9diVcbSKweIUwlbgddBzWWtv1PghN\nNDl7oHnMd1dF8LloIwONSfigVjKJuGOdFIFmeeHNKsoJadWWJK4o7Dej3wUg\nNfcwaYnOP7Bbggz4zejldx4nWYZnkpDSN9gz9fMplEMcMxYGsLHGUghagcNm\nXUoBgZMtCPUqUfPaIiS/YC3wj8oB6JSzklRJuHrgncKkWmDtI065Bkq09Kpy\ncCNs6D+txgCIwW1yGLZH6oN2245X07q44jiVvXCn8/IMR8XHkuz6S1oWH7w9\nQ+/OuwcfvxHfLGgty+gnJJnAzg4gVqZOQgM20EIkyNoeYR+uQzRfikCj2mqk\nIMcdRrgaD/vwXHuO8AYoEXpfmm49KQFUxLyvJwrCXWHGrBON1WMHKC9QxnNp\ntkRBEJJ0z5zx10JrjLnB/Rf/uVDVv81/FsG49xl5lAdX6929ODm5itJ2mBeX\nQfKkon2KJb0sTus08RQco0wZTGFVbUtyf4HutUwQtLiRplhseCuLJOfBjcVp\nouhO\r\n=xooN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZQtrgkftSk4181Hvo532U3s7TuInoPuqn+1+WY5nGDAIgEsfTzvclBsnxAEKIQiczBhqPw2sHMFa593xrHlCZeVI="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.104_1600746074431_0.17150110134922492"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.104\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.105":{"name":"@leanup/cli","version":"1.1.0-rc.105","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.105","@leanup/cli-core-format":"^1.1.0-rc.102","@leanup/cli-core-lint":"^1.1.0-rc.105","@leanup/cli-core-test":"^1.1.0-rc.102","autoprefixer":"^10.0.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss":"^8.0.7","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI*</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.105","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FnOHHWUXpYD8aAtq8uitWwgU5FLeFoBXSrU8ENOSuGdcvEIg4zfbFkIZjovGmgnHolj46493lbKFx0IhQdGcTg==","shasum":"9e2fd52b2f763188a2c0cebf25f60fe983576466","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.105.tgz","fileCount":50,"unpackedSize":378579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaXjKCRA9TVsSAnZWagAA0EMP/0sjrRoZd+bHbccmceN0\nB003PvfaiKbCezba1FIjP6StAJfUMO+UEbffPMutypqAoRqStrSC1YTJIa6R\nWUFRSLLYQHDPPOgBqJTMVsGSyWJJ35ROPPqBt5pMeNOAwg41LISXHQCY/7/4\nZjLrZNThB6N/T48G/orOGFkAOF1CtZB2VpsJXDyjjdBWfeKjlo6DJtrsU/qY\nq+f7YvnoEcSke/L+EPtxw3TJHfZ+iUGvprGpry05zPNynAlteDgT9coUJvy1\n8DEAApO86rO0dhXyCgN3fjq/0b/sNufFYPqGmWfmacINvdSb4eXzmXjVP4fb\nj33OgZzlONaN2AObO+sCsxbAalyTOivZ636v+/I0J0duSLBfRh1n0PhyEjqd\nw4hXneZtS/IwM6wd2nkmuEFa1YNOC37hxCegtX0yyYMi1nY5AB5u4ufWRpzC\nlchDlxcrwJLqdcs+E6+LnyR14dJYvzj9Nq/yQ5xM7zA849cc3JiETYTwiX1f\nhLlItA9EjQdJu80vRLlObpQAlIG8O6I9aWRC79JDatzz2RWvb2KJU1KYEeqy\naz51IGJ2+6kgoi5kF2897GlNnG71I0ATpOR4M3i+HjwXOJEiL1fcUuG61haC\nVk9DqASfCJ9iteeSsi6w414NN/bQvQr7Rd9300Yvz1FNCSLPFKL4D1M40RW8\nV4bp\r\n=FwUS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDSFp+sTq/QOOLqbnDEjilLPiMg7ZW5rU/wyZ8NHUDurAiAiAzARcnfzNQGyzY9nipwqW6hyctGEant2n760HOx/vQ=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.105_1600747722358_0.27388120165052965"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.105\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.9":{"name":"@leanup/cli","version":"1.0.9","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.8","@leanup/cli-core-format":"^1.0.8","@leanup/cli-core-lint":"^1.0.8","@leanup/cli-core-test":"^1.0.8","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.4.1","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.1","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.9","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-J2ihp4CVQeqagPAtHXGhWEM8kNTiGjccV36uzbImm0iIlFDbC8Hn7arlVqVlPjoL3gMIgaTlhJrDZKGDs/zOjQ==","shasum":"d5241526758cdca644f6bdc4f9673882963b0cc6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.9.tgz","fileCount":50,"unpackedSize":377917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaXlFCRA9TVsSAnZWagAA1/8P/27HoF/4S/aZpgxuxLxN\nGtW+00OVnP/A8M6D+6ugyw/LKV3f0xmxK0ObJMSZFsdM8VRbdvxbFKiyMVIH\n/VbOXwj3YMB++fcWIAv5Y3pN0n4i+tIZHvvoKGTjyLzaevdHTmPCcz8a4xSI\nj6AUW/oHBE0KzvaYa7u2s2C5MIY3bE0u0xSHGrkun6D17DsoMjjq5rzI+bVQ\noF+CfnpK6O6DWtoXSfReb5vUkXlC3gUFe/7tO3o7PYCy1v/JfLatkiYTEk1Q\n4mqhXUBUkkb/puFcEfTV2EyNFVuJRZ5yazt4+ob5rVHz5WL39ajKzZ1oTkar\n/La74CROyV27oqdTuBS8pNvxTPRE2EQs084CyOYQnYDiJmoKB0y9XQl1lSOR\nrK3xqRH1vxnvTcklBs8Pv4gisnLMjD94JTEiP2JVEmrBbG+abx+Nxf4Q2dd0\nIVnjjostT2m7ZEqBKrhwCaeE1wH2kIpW3YGDv6/0HZyedpV+iEdo2zSvpBR1\noZ5uiaVWDwwzPo4o9rkmsgrklnnnx5DIWsS002hWoDVnFdBMs35DYHVZB2XN\nAXk9CqNNduH8QG9WqQWy2OvmDO8mePP8VviTHAV3bPpzGRy+Guf14MKySJgM\nbUZOXESxvmqRsN/3CXcMfU3F5w8NoXnsReR5YwXnVFPPAFwkuqR2RZrJJArE\nfl+2\r\n=UZaR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMFUGmgPzgvKBqautdFsBeEVtNrhkqtlZf/Trbao7z7wIgBocEnxayzDf4aKLSxlRFB6bE5cHMmoNkzEKMm5w7KJk="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.9_1600747844581_0.19244926541588914"},"_hasShrinkwrap":false},"1.0.10":{"name":"@leanup/cli","version":"1.0.10","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.8","@leanup/cli-core-format":"^1.0.8","@leanup/cli-core-lint":"^1.0.10","@leanup/cli-core-test":"^1.0.8","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.10","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-wJ/8Qn61E2mfC1FJJf5K4RGvT4JyyLhMwEefyCzDqAeWfgWJqLNGj6DFOISakKB8bW8945nLgK/fUblzANeT4g==","shasum":"3d9881508d65bde25791af3e30bd90f886ee965e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.10.tgz","fileCount":50,"unpackedSize":377919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaaUBCRA9TVsSAnZWagAAkJYQAKDseNcC9B4wy2fEKeYo\nbdmZ95tvFtcMs2obK2KFs8t+bzsmup249ruFJ2WzJkC2ELG71/yUp6EIBEmL\nNu0XEDrmmEPtLuKFy/d6b2cC5CbuIn/QySdO1DWQcR4SpdYWJI0xyZ9sNvmw\nAHkZi7ID2zMhGTCVL9e9td8rcg0S0Z8l1ldDsJbdBR16vQIj1TJiZJYRFdIZ\njtLMytW/F0AHK+C3yxA3MoySk78Fmt+haQMT3ApY9wsDYEIX2AidPHyWXN46\nBgcz97yYx7UBS7ngM/WZHvxZIrN4QCuKfZbMeHSyYCCXiGSPG5wsx9kcsyQx\njaG6mSjvbMtZ3/TthFixGhIx69oSgqDv3Kko4rPtWET6GOmSLs6UrHoMNOgo\nlFQWhl6EDe5tRFXOulpnMzgU9isKFNiIgiZOffj3GlI7ZJoZiwXVNZTLABdj\nEjZW/yGzwsNd3tCLIlCiFcSeN8PQcrWw/dSEzMIWXfW+XvDo+uKmO61dL/Tt\n8Mz0AD0WGz3KFTV6CMNGHxeC7tw3jOXyyGCBoxnhKG5jSfWfaSVNWLI8oLcn\ndbyqL+6x/xI3P5NF/sVQu3F54akjJbm03bZMAcCN3kTEKG1QfBkNPL0U23Fv\nkqxDM0JVPN1xmiPpkd6g/AxHeMyBxBW2UKBWbHozJZ78ExqO8CPoOowRORhQ\ngkIM\r\n=qmUi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHE03HIsRKlePX2H3XGfSd5kdDpNr9HoqxCIEXHCipxnAiB+VYMDiqUnqs6WpNunkE3xLsJ6PC7F8Yk/ZnN4FfH1/Q=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.10_1600759040763_0.9605818565955861"},"_hasShrinkwrap":false},"1.0.11":{"name":"@leanup/cli","version":"1.0.11","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.8","@leanup/cli-core-format":"^1.0.8","@leanup/cli-core-lint":"^1.0.10","@leanup/cli-core-test":"^1.0.8","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.11","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-g9jzhKj1jNOMcqp5dck86prcsPod4u+xLLCKTHrLf+oDrcxI2tvparsT+YD2rlMFQ9YeAgOMSyrbbtuY7nVSYA==","shasum":"c2d926d23c58ca578e4130bffb79b7fc10498b4f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.11.tgz","fileCount":50,"unpackedSize":377919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbE25CRA9TVsSAnZWagAA25UP/REvbvkktqHAqC3xBZOe\nuSg7cSqelSLZu5QMHX7B6eDu4bMQkvRVCUQwBAwqB1B0DqYVPPPif0CDS3mL\npsnfRuNgz8ISbAJeQY7J+zSg9MmVRnVSIch3hwF14WRpmXoxqOu7StPg1PoB\nSH0PyOot8J0shuD9/X73hSjIF/Q+C7QWDU6SQe2Br+jwJdlsRsPDm5ICLmWG\nZdbV5NmVTKZjmKV/pHZRY5cBBnvBlREJ+s2UwIGdKoTqOWQB8HeqOX5xqo0E\nM2HQuksWENw4toXjH9CRU6plUb01hE2l1pFcYPGeCF0Nz1YRhtBp0i4sGuuy\nS5bwyog+ISnwE+2BNV/oShs768QQtg9a3lWmuvibGRzFBp7e9OqPmqoL4qoE\n9MJQx7Xe6K6Ik/kFkgZtM62RuyJji1X7JlYeN5nOk2QmQIvhFO3aNwkZbthB\nwpM0M8ba++gNRW4Vbc4bwmEI+09LQaW00l2GXA4GTBzlMnV86Tgu4Bfr6/UE\nUgGZDc3hs26XlLeOfK9zuU5OEdAMtJMTV8w+7wOsCENrmxsH1bo4Fq975IRu\nS/HQRr5xbeygYX9JgaxPZG0jkJPA49nch9e4wiox+rjqGRiXEAg+rcFrrhAk\nhb5/Xpi1WHnXreECN51YIVrdBNe8uwm4msBoDvGu4j/EM2u1DWY2g/rOIL/j\nD4vH\r\n=7LUP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBvdew4aUcNe6l9gjHlbH4632uzLuRLJxvY9H9LrFEpVAiAvk5fiTAiJ9qJmdimh0sRKgreZIyx/b9xLmldAv+hgaA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.11_1600933304846_0.644078564273892"},"_hasShrinkwrap":false},"1.1.0-rc.107":{"name":"@leanup/cli","version":"1.1.0-rc.107","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.105","@leanup/cli-core-format":"^1.1.0-rc.102","@leanup/cli-core-lint":"^1.1.0-rc.105","@leanup/cli-core-test":"^1.1.0-rc.102","autoprefixer":"^10.0.0","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss":"^8.0.9","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.107","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N5SVpg7XDcFWkI/T2sRWLNaOCDVZrzeEWnlTb6BqUANBYiz0MglhtXR6fFvFg52Hkny/1BSIn6DhntCtw70FuA==","shasum":"6fc15659c3a7cf0cad3b910e5d4f42d9ab62aec5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.107.tgz","fileCount":50,"unpackedSize":378578,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbE3DCRA9TVsSAnZWagAA6ToP/RUJWw4YAVGvjfYzk3Nn\n1jTZbKE08cMvgl4jpJB6QcX8f64EXqZKtxByKU+zXMRr24HNbJTfK63wtkFO\n7r0wlIf24OpmSt1WjDpAuIKDQWogOIfYi0oMhdBrSFSlm5rN9ILt/AgchUYh\nbSf+SKM/BgGDqNUckX7VUSJ9UXb2YGmpu5LQghYqFDnyeFD5ZxMkPwZcPwhT\nUv94a1UZGsZjri08O3ImmZdyRT/5oqeKQET4k94YGBN3azL1BsRq+pSe9Iyu\nk8C/8WF4QmugHCWDkWULugjYTc2Hi0MFevhIcKcozDESUfXNd3+VYxPUbcJJ\nQIainply1NEci2pl/7alPJM9svMFodTKtcuizE0sx+Jq79wfIsNuNR1P1d3D\nHpne16wWkvz8VyJ9XIJLK8D4A0qsLBNI2YFMMWqCoBnqK4gOFW4DC9glQKll\nINT129bGqh71eHH3Mu3qXWXi1Sc2jHeF7l2TynAEtAwiUZWBNpY8ppRj73wk\nRr/W+6jyyolrFfjx/q+lb5en8zw2oS6G8DDSoNhK1ItmTQRXtKt99TZZxOfC\ne+VD0pv/VKZ24Mn+wyASnuikG0wPzx1cqHMjMZDXDXlBcntgGoOhjndXScbg\nQ9bnP1vPv0b2GwZ4OJ7fBEbq1qxtMakpi8/ZBydSlRaSKZQblazsoXLBV52I\n1djk\r\n=Ytxc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDS5i2St9PQ1ACa6iLva7V+8/I/1MZ+4gxBCuhoxebn6AIgAmI9be+IiytDwpejr2QfQ/3jopsGmYT2MqaFdSOSpuA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.107_1600933314567_0.6639729009644444"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.107\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.14":{"name":"@leanup/cli","version":"1.0.14","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.8","@leanup/cli-core-format":"^1.0.8","@leanup/cli-core-lint":"^1.0.14","@leanup/cli-core-test":"^1.0.14","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.14","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-F8o99dlx9gyUGyqfI0EzIe9NW9dmv4fz5Ynm5WYGAC3MbPpfP5wsYLJACj6L6NsqKLnZuAU2IMjs9M1dNYdvwA==","shasum":"32f65d81bab82e82a68563e86f42a62e335ded74","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.14.tgz","fileCount":50,"unpackedSize":377920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcCSwCRA9TVsSAnZWagAAqsgP/1sNJEcB1Q46Qr3yeMpf\nMNtyJRnnKVbwErCwPE+nFza5nS8wMZPZdbRDXU/5QC7y3wAAKTSrQOPR5UAO\nIHSfLAlow/d5t2pOJch8Kir6NBCOmyzcKyt80nuxPIq4Q2vk5ADI36fHnxuc\niK+f7YTV1uc07aoTVc8ynQe/0bZVrkvG6WLy5YdCPgOk4QHUR4+b3nKHK/PG\nJ5ASSiUHTjBoFsZTVJPCHnesO3WKIVWg7gbgILTrJYSZnDhHvugHO0W2/zrx\n50ggn1Pb/PBL/MaUCvRrsaufja2sionxtolKx7k4Y6sfuIc9DJw6FhfmsO3A\ncQPa+C3xnPLL0q+KPV5n466kGmpV85oMZXOVE+0E8kad41kTbynPZDIfQf+Z\nMfpWUsiwgHMAn0aCpEgckK4YlLhCCyvctbw848OCWX40iB2GdGE+C97vB+4H\nE1gmRRdzSatHvR8+FfDhI3hxc8OKCOsorzC8HFiRh5Gd77vbvww32Yz9w0i7\nZqDu8WhJ2V5Zm+T4XTphfCHhdv+uFu3/mTuc74dGTMTtTyaccdZEzwDNnhvJ\nhJLi1V14VvcJKukk0TaMagL6tlALNtW97jm8YauLuIkRS3yAijpHTtdsXGuG\nRjD7MVUMbomSxQUP5FQfdRhCaNFyy5rZnVdM9rcRau8TnnuljVCDXs1r0cU9\nOvFP\r\n=BdQd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNytGyGBS2KNk/xAIGzUPhEddvwCFUbDYtj5aGfaHKgAiA/cIVUQ96lt3Zqd7W/nebate1Fhty1RfSLIZTe98AJIg=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.14_1601184944079_0.7335139136269702"},"_hasShrinkwrap":false},"1.1.0-rc.110":{"name":"@leanup/cli","version":"1.1.0-rc.110","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.105","@leanup/cli-core-format":"^1.1.0-rc.102","@leanup/cli-core-lint":"^1.1.0-rc.110","@leanup/cli-core-test":"^1.1.0-rc.110","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss":"^8.1.0","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.110","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UyBzG+ww3Nd8M6APFlvIUBQ6zo+DTp+awmjFLgNVAm9L/TdPGd88DgnNyoxQoTnV1f4/6/wI1EPxqvoJvBJD/A==","shasum":"b9ba8ba6fccd1be6ed21f39b2a986b5a078ceac4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.110.tgz","fileCount":50,"unpackedSize":378578,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcCXACRA9TVsSAnZWagAAXbYQAJ4v1kAzNqQCEs6QMkCy\nAHmoSx/59E2KcDZVKYG+paTwEkmYVpNBVBCo+dmhCotEdeqL0li7K6mIDS7w\nDRhcJLKTU5cw1GejD0h/HVDOtUPXBBtd4zLu4ENeY48oTkJbdsPy0MyrPOtY\nj9zR66JXb/8xBpvaDhyP4febxdmaFJ4mAy7ol5VqnCjvQH8s9QTLuYrKns7n\nRI9VpIXluWxrHTfayuvQ3kXoWkLG4bSUQTTKKqbNBHD+nmWV/twDjaC/5uKh\n6XoKMH/ipZele+Pqz4GQfsPbMWro8yFCn76G2+6F9O7jkOII2Py+nBX+7JKi\nG4K7Zr3NJTN+M2afHzQxq7/hHjCvkl/e2qf6R42A4rOGUgHjhagHvHp7uC07\n/uKRDUO729wFJhqOdVCjYxHuvOSPwPg9hH3JChHxC8G2cod8ZVCQda05XX0s\nMVGx4CihoPl9rj3jC4uhpL0f717EPHhU+lXZFUkzmNn6zjdruWUCV19HWls3\nTKe5uLfqFFnoXujz1AywCvQ06FLo1T9Yv1wPh5VyjL0rgZsF/INjNhEvK2Ej\ndINK40Ln9iVrb2W2OHvL9mO9oc3YW8q0Hxz4d6cYJ/1AtBZAK//maESw8Da3\nQzfMp8R0unaM4UUXowGBPKPqzJIjACUFDxAjit8tv4YHIvwwP7toIb/i+gRF\n3jdU\r\n=ax0C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCl5JQK3d4P/025KHzTOqPvw9TFNnOveYLWWw6blQHLwIgXD4OPpUrMRlIVo4llUV+6xer3BA5XnmPpYyEUG8zpUU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.110_1601185215373_0.9482063279995743"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.110\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.15":{"name":"@leanup/cli","version":"1.0.15","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.8","@leanup/cli-core-format":"^1.0.8","@leanup/cli-core-lint":"^1.0.14","@leanup/cli-core-test":"^1.0.14","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.15","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CeSn2k17q9ygpMzm1GBmUZyUn4PHk2QU/HS6iWGfrmhxqOgc1WboWXO9vcTnpkUysl2AcrH+fIfHjJvZ3352dw==","shasum":"0338012b19bca7e49c11f9e1fac7996101086d9d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.15.tgz","fileCount":50,"unpackedSize":378442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfciyeCRA9TVsSAnZWagAAgBsQAJA1F4b/aZ5vP7P754Iq\nYKOvWFZqGzDtUF6nHHI3U9pwP7GGVnXCajI7cRH2ErmWBAKRt2D1gzMgXbeo\n2cHZj7JFArjlPAg4BPqPrgXyiDPaufBa1oatElPGf4XKJFlTV1zkG2gf7Vok\nbRwPDXc9FPuDRIn/HSQzrJrXYhpdyYHy/tA4AJsmJfjmDyjD83nl3m5kZy9z\n9+Dp0Yn65EavLU02BuSUhm9Io/PuplfNRlT3siBrNySBcp9KEbQRjLmSDZA3\nrcTHQ3l/C+JH3CkKOK8w20fOm+FFkZRN2+syAagblyP2dLlj2iWxT5rprJjR\nxGLCh6O1D+iV/AcjeZrQmcFZ4XhZZlzXQi741Gg1ZBPYaFjJvIxCBBEUkuXk\njRmbKvyJ7XL4An7BnLZhySTVhYyU/QRsFMqzES3H3XeEP2Fa4ENnu63bTMCB\n8A8gEwJAUqHMZKz0F0a+N7QHtEPJHHOgdsVMENpt5DXQfyx/uMX31YSthGpE\nPa7xbGmG6pAPp6kdkIJo+g7qJPP30lb80LunnpYsoriesAMU4ZkUe0hEOWOn\nrHIIxDtxSHv6daiSUSk8dnYzejj/NkwGl5lQMejk/nXP/YE0ondX+/fl01qF\n1j9VA0nBMFda9GQziKPSLWKXgrRdZ4PgA6cP9ydCbDzcawq/SrkPesJwrw4J\nyRVB\r\n=nliD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZL124zDdjj0QhI+CP+MXCPVi/ltIeZvR8igGjBNFDXAiAa4toOCw8wrJPouRFhXaak/47NjsXCAC1ju+vzWqPNaQ=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.15_1601318045371_0.9712918082426718"},"_hasShrinkwrap":false},"1.1.0-rc.111":{"name":"@leanup/cli","version":"1.1.0-rc.111","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.105","@leanup/cli-core-format":"^1.1.0-rc.102","@leanup/cli-core-lint":"^1.1.0-rc.110","@leanup/cli-core-test":"^1.1.0-rc.110","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss":"^8.1.0","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.111","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-mbpf9X/Py0DA7tZcNm0NTfVAitM024qiN33bodASZxrqJ1ETRkVS6fZkPvVcBLI9A0tM2fiKM4O8ZyKcPrdkxQ==","shasum":"a7ee1b6706baa3d3a0b5b5cf4f9ecaf6193b5a9e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.111.tgz","fileCount":50,"unpackedSize":379100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcjNsCRA9TVsSAnZWagAA1IMP/0XH6R83+CbOpZN/XyQP\nFlyxtNz16lDfMgjBP8VtSN8DxtYr+9nVX2Y/z2Tg5rbcd09c3FbFHWYwCqiq\nqOGD5VPTDmGufuGcvFpIFNwmJIjtATX+j3RTZ/jLFGbbnu0wpiVjiUTzp8QA\nEZQvj4Ufhjgz/jmJzfWIuc/4UjuFbIkUK/ioDwKYfSr4DYuf0JeG2ioUP8ds\nOfa/0NJhh2ZdPqg2TD3wBjpsZarpIzK4byijQnWW1h3Ho8BE2We4+sMRrww4\nuctUmqk84wXyaseJehxsN8iv1MwD9t1ZNijo8Ni6PfqoRibPXiQJt689b8f8\nDKhasSbdzFoQvWtcxrxWYDynEBnp/qmkwIibh9NK0RFVp4VogG+qfhji1CxD\nGniPISnzWI2QEsR7/gHQFNkqE30CjPolWHSblzfVCi6c7QHM902C9tvO+pgg\n+b8JSg0jg2Ecv7T3c9u7yOXTBdoQfh7fQ9uLnuKVZZe80ONNy//SQiCGl3XJ\noL2fY5IJ7s1zMpqaGAZSA1Wqo1GRsVn3RCaZ1PWMeOblfTevlaz3hpm0Pa46\nSrA8RjORoaKBW1qqbm5ctXJ3zDyie9e3vfG+4ZOA3iTdgjUQlp8V/prTIFRU\ns1aN3fLUx8CZ3VFAsBHbAv27kT82kfR+Q1LkY1/R+YfbqWP4Fm6bs1T8krpq\nZNDN\r\n=wjQu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFbqqyjQRLQJP8JSOvUL49CLPAONmmzAPI7yrdCb3otPAiAdMqRQKI2MPlyCejYrTVtIbQhHTSLWsoXmMUGsXIYagA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.111_1601319787802_0.609301738875575"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.111\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.16":{"name":"@leanup/cli","version":"1.0.16","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.16","@leanup/cli-core-format":"^1.0.16","@leanup/cli-core-lint":"^1.0.16","@leanup/cli-core-test":"^1.0.16","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.16","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-pMrnb5J/AilnCzOKG3dpGtcz0bD/ZmHxw0mqygWRzZ+usncE3DdgJHIvNEsqommdQK9Tc5xTgFuPsGN2nN5cCw==","shasum":"67465a82297663d21d70a20652fe68a428911ef6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.16.tgz","fileCount":51,"unpackedSize":379654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcqMYCRA9TVsSAnZWagAAAukP/iHBULZR+SgSg8lFY49t\nevaEGg/5qy4CY4Md0gOq4sCQ++9zsW3Thn6/xjJEBqgmWUBqqWBbqxS3Fdg5\nC29TRoaL7TDN6GH4Rt0pVtYME6Q7lRt9vQI4Ag2527adC14c6zg2A5BvUJO1\nagifki2mjBUll7WjQBjf4YYYAv79KZPs2rAXnhBpIVR1QKlLhk5CJcTH+Ur4\nEM2Qfv2FF0sW+l1Dp0YX/+wcxirSe5eEUkK0DtpmeKAgX6UCy1w5GORIvofP\n9M1h1Gl6K1FggmApaVOhBSyvJGZOoOhwu2LFbO8GDsfQVQp3PdDAqqO55GLJ\ny2kvKSItgtE2QFAifFdqVh0NFr8Fl2TMjjLaJZPdGsGO7K54LjzZ2uu2KWAK\nkaoh25W8+IdSR95Baaa8APVBELp7gp8NDmp6aq4Wj/g57ZqirSMGnUfckxu6\nUv0sk0TjXd0qUCtq+Io5/47lR47OjBeKGKjGfb3Oqu/hdqilsvfJrnL4KtZ7\nWVJ5reuL2EW8qxvFCL2Y3tfe/3pYpPeZ1gWMx7U39IjcLcye2mKYt7PIZN9E\nrxHPicp/uHNN24XpsiQkO+CvymCSyjeOOcWU/uKgD8U+6QhiEoFcEXxSrqt/\n1+yJ5vaGW7KKAaOZ9dze+8VQ5cvDo5PBxdakSYOh22sgknOlAcOvyRIMripG\nBrN6\r\n=YL8w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLujPis83Vtm6dMWhNmvolvOoUcSqTCy03ug8RiLiYZAIgcFHb4cxBf1nQTvdTbeksAM6+7Nw7VkkbQSihvrxnzAs="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.16_1601348375421_0.20956536209216736"},"_hasShrinkwrap":false},"1.1.0-rc.112":{"name":"@leanup/cli","version":"1.1.0-rc.112","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.105","@leanup/cli-core-format":"^1.1.0-rc.102","@leanup/cli-core-lint":"^1.1.0-rc.112","@leanup/cli-core-test":"^1.1.0-rc.110","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss":"^8.1.1","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/cli/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/cli/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.112","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-o/G//2DXpcEG7h29wp1HmfhFDwxH2uysQoSF+o4XGweYkELkuXa2W3df2Emw5RmLShUAG3wduAC72jx2bKcL+g==","shasum":"6fd9061fa7c8457889619fc2241998a17f4b6c9c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.112.tgz","fileCount":51,"unpackedSize":380310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcqXFCRA9TVsSAnZWagAAE5oP/2algHMVihmRW3S1PMYy\nfxgxujUfDbCOIR1J5oQZ/0GwwO068ZLY3CmnyEoqtMYvQy/KQE7cmQCOeaNH\nk+i+o79TT7te3sGnDSQR0gcMblFEDByqDIoXCw9nflJrmdkAfdg7RIkZ+udE\ndgYCrXhF+XqSUwwIiX5+ACi7UTrtNvdcFVaJGkNWpdTKMxGQVJhuRdp3KMTC\nqKWBLKlOs6Qa6Olithdb58PLpsZ78/2YYbIBvk97Q+fmCFwsGPCPf58YgojD\nas71FP8/evI50i4yVI4P+6pjFYnQBK5lut0i3glPmzS4Yj8Rk/2TLkjoyPq1\n/z190ji6Hg5hGUwrBzQ+3n+1VAzWihxyFdJqZy5k66zF31NPMvd2N63so6eP\nr4MvlkmPhtkWLJbrUKrV7eenydewB9mi+Kq3ERzC+aVRdCz8iShACcOr8nkp\nUEMTei+L7dQXRjVa+wsiR1lUzmCQwHDkCy4n4N7v2BDr0aaaqtMADD9jrGPh\n5ZadBHTiHh9zsjpkgi1kA9aeXqI5HX6lLLcdnOld4pOSdCPnpKHiIFATxege\nAA+9e88s+/grE7TsgndLAQ5/dzcg0X17lh1L1zXWL0Ph5xr0kCAuxZbuWLNj\nYWKHfLTQei9/uu0pq/sPYGrfA8yii9NkuPNcgJFJ8zmDIID1ShtYCVQ2/e+S\ni689\r\n=9nfb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFSmcUScnqTPGNmfS52eW8X59t/04IPel0V1PPTAq5p2AiEA/foRPq4yJfyjzktCAvzoMgrwVimnoBQLuVMx53CY3Zs="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.112_1601349060669_0.6114007317428369"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.112\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.17":{"name":"@leanup/cli","version":"1.0.17","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/cli.git"},"bugs":{"url":"https://github.com/leanupjs/cli/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.17","@leanup/cli-core-format":"^1.0.17","@leanup/cli-core-lint":"^1.0.17","@leanup/cli-core-test":"^1.0.17","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.17","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-GUPmFOo7vH9JXdmb2fR58noa47IwSa8yY6RxKpqfsJjWuow7oMO/EqLiAvJJCtKkn6eyPnKKNIoYe7+gnhg8+g==","shasum":"2df90bd4c2b734e718cd25a099931813665223fd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.17.tgz","fileCount":51,"unpackedSize":379650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc50FCRA9TVsSAnZWagAA3swP/jAnsWcOxw50cwH1AW6L\ndQqnEAaVf/ZyUQZ4gtW+tk+2E+G7A0LkHFqozwSx9V+DrdN1pC1M+DShPJHu\nGTO7xK3EO9xWbFoYHUeuCOPMK1HCLrRtNLYGlVdf4eqzWcNHgV6iMJDMTLon\nulxhElccba6mSAYDGWPAymHWDyYs+qEDBXYzKWTONzeXVIGpBVuHkFt02NX6\nLsgmyC5N0cSQNH7wUZMZm0KjbdYfHDRR5AiLg/9zhcYy8vwEVrqSy4gx6Pzp\nbcLOiifKrA3YtwpYKKhvuWLckFq51m+ju7sNoQeMiyw1KInHZx9NHTjpZ/7F\nhN/VHfZ98IfbIbUvwrumpFlT9rUqrCyNSfM+jDayYmZ64huf2+0dJdXNTMOa\nchDv+donf9POVeri3L90umIaaDlcfWmIh1SLKoyosGmZab7CP/fv+DXnDtJ/\nA5jK0gJimapohZstnTnggSAQWDlHrr6JftQFqfNgK9+rCDMJfJAcEVlGk6qr\nyVGL6/caOb01WPtIHrXKETaQOqZsAkLNLCBovwHYRq6Hnz/HqlP3aMBiJfkN\nIYlZzJBzKIAPOQPvUqecx2c536yJlrXuaZNr4JWPCshT73jy1xhZ25jP2AVr\n0/+khhAu1MR/cXNR4KBuiKTvlCCG8dndAJKCaS7uMd/bS4alF8v1QSNtmjlp\n/5QA\r\n=9pJc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHqSWss0ByMwP9ZM5W0WG5RPJP7ADUZu1fMokMkU15R5AiEA4jCj9oaUdAuB9SJYGZ6kPDd7jFVnkD6e5EUi5zE6Y7g="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.17_1601412356770_0.8135601565240507"},"_hasShrinkwrap":false},"1.1.0-rc.113":{"name":"@leanup/cli","version":"1.1.0-rc.113","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.113","@leanup/cli-core-format":"^1.1.0-rc.113","@leanup/cli-core-lint":"^1.1.0-rc.113","@leanup/cli-core-test":"^1.1.0-rc.113","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss":"^8.1.1","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.113","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-iZEIJJKKp4Ci95vzc0BVoFZLTP3eJoyxFjHkf2ahSaNx8hDJon86j+9TSsn9dr5iXSTVMRPs4Dj9cASIr66gaA==","shasum":"33380b555f3e816e6950e452927972e4c96489d9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.113.tgz","fileCount":51,"unpackedSize":380385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdsf6CRA9TVsSAnZWagAA/HAQAJtogzwGB0okpFMUaDsm\njSvPKM+QsYgl1iBYjJAcj8Y+ybqRyPYW5G6ZYyTGwgXLbd4Suh1stKrZmRmy\nOyN7632HDwZYbpUrxLNvdMoPsq7kOO8y4PVmH8LZTAqJGex9F8GporegwsR4\njuL56pdi/4ADlJIwvs8DwiRxKA9lbC1wOW4hWmNYIzqz0PPnOYLk+bcB/9mF\nf41mr+dpHbKOREVgtMcIQ8bhC7lA76YFer4/OHRy9yn9AkrI90JhIEQ8A0vi\n7a/eDoAzoWFWaIMJnYbuEWOrvTJBQmo2BB+xEjADBuMmzoqBGoVK3jLekM7/\nxIqmFpo6EJBQ4VzoOHG5WW+EhNIyKyZlYNBE3Bnc7rYX1YjX2QF/ofv6y+t5\ntHDhkKr5XxV24DGc1ih8425IA8bKdvXg/diEZzfomBQwJw6LL0m+9ZICZTy3\nZ9k5Gdex/v4YPYKeNz4d1UYkflGlI4NXfwKS7nClifYu4rvbkePRRNAXIwJp\ni586BbhQjJxjQ8s4UYNIovTQB2UbirhhwAf10aregt4Y40dtco/ekBP3wRfK\ni+UFBfJtCX+7Xe/ip9/zYdZtowfEmPu1Ko0KMb/hRjFagkCyAVvGSnMzj/Q6\n0JcIFg5YCkzU0JKr0L90KozOLFH/6Y5MefdcG3w+puVxkVJn3BVrtf/s6dK1\n8cRO\r\n=PUyU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPPWUB9UhrpMa2EPFyBZ1iq+w4PP/3cQrx9N1Md8W/ogIhALE64t0DFx2ac1MhdmqzTBBrhjvIIL/rYJM/aJDjXw2B"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.113_1601619961385_0.8277248924188707"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.113\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.18":{"name":"@leanup/cli","version":"1.0.18","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.18","@leanup/cli-core-format":"^1.0.18","@leanup/cli-core-lint":"^1.0.18","@leanup/cli-core-test":"^1.0.18","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.18","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-a+11TNzqri2QPtF/ogctRzpFi3yaXdX+TnzWqfFETiWZ4UHjzx1uU7HQIWkwltNyRM56346FdY39bcS/8dH5GA==","shasum":"521badcfbb897b6cfde54d7fcaa41646864bff65","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.18.tgz","fileCount":51,"unpackedSize":379729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdsi/CRA9TVsSAnZWagAAaYgP/1GAJjcz0cT+7iCL5OFY\nBe/z8iSp919xZ2Q9inflfo+a5UPB9+8q/VmbPQaDhw5NUzZT4jtTQe5ZzKf3\n4v3/a4Wus4aYkjZZPDxuC1d58hbmTLMBJMyxdBikiFGIgGOGQGdg66WetUIl\nwgr0TiX/rpytbMIKygiq+UYXB6lnfm19267u/UYDZKSxddOWuH3C3E+YrglS\nOiTwfHOr7cOwewefYiHHHhr7iowYSXQX9Kv2I19FCveBIb0qM4O65Nr45dPp\nlk3JdhjzLhcVZzwQBo8G5PmLoik7g0rN5Yd5EoO+xubPGpjAcNWZvkaHcKhD\nTjpyrRO9qnHI4eI3KB3iNi8r7c9BBn4O5mRGYjCtZ+WxSP8ohrbpFnHCbk4p\nEfCR5aBvhHE8TIdp5jnMRJn6F5GGas8RFXpivBs0Fz4dQabqjSXiWclIMSmR\n1B3HwFM6Ud+C9mRsDRqTDaLWOe/0CIoOLqOzu1H2Ama92KAzpjDKSWRxFg6t\naaAVBHvS1t4C8vCg9b+AbBDWJfZEA3mQHZftfchULdtseUEL1ywBPzgOJbsx\nFfz6Baw1yd1Q2PDCFIhnRwKX4ppz6dm5hrorp7mkyc3tgpmN3o1EEHO9ab94\n4OBTVmp27S4fPdeV8r5Xc0jHkHafcMgJHuTs/KE/mgnAK13MkzawVtUdGr/i\njG9Q\r\n=pD99\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFiUsy9ld+iySliQvEMyWVNPvmYbip/jXRiCs0aTF7sEAiEA6o63GutfciAqBAjsyj2LMjV2uJmmt+8i4U/iVKETB9k="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.18_1601620159090_0.32174498252759887"},"_hasShrinkwrap":false},"1.0.19":{"name":"@leanup/cli","version":"1.0.19","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.18","@leanup/cli-core-format":"^1.0.18","@leanup/cli-core-lint":"^1.0.18","@leanup/cli-core-test":"^1.0.18","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.19","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ObVTU5y6lyHkVkQBqa6AE1U8kwN2D4344aOaRF6hcd/aLCgCKBWYcOFvq9Zku6nKpSszC9UEb4b6EoKlZ1zIEg==","shasum":"7030f1f86c37511002cb152e931d7a1349c87489","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.19.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd9mgCRA9TVsSAnZWagAA6JEP/A5B0AlQSTNaT+sGVj96\nsscxrNGhPNW0kG/3/BC8K4U08b6GvN2UZNnlIcgJx67GLaG35p7QTfVzM4t8\nY5LsZSzlkoldhG0SYVdSTn1arSdt6tnCsmbhhkLM/rHm/hJiXoeTn002s7Ck\n+f4D5rW86tbNXcGJVME7V06x1+/3NcwA9JiJZdpMt99XTgn5g5J4Fuxk0+Lt\njvNaHfqwfEQCk1zRNx8c0qQdfmOCjzHiua869EmSPyzNlrIN0qPEg/JxnaAu\nxjspDGyb2oisxlKuyy+HiThozH5VTjT57AureIjFkFQyCvnYmqGdJhu9pKRn\nac84MLR3gsqVYWdDaG4xvpBxS6qpa5zT1Do0dkL8Y7bzypijUYoqnp9+Pyms\n7BDzBBZmSgippOkZJdEO7YXuODt2xeps75yzNjejHbTM7Z6m8wqA1tMTXc40\nhCCpdKIcDLFPIUpdN6LuOwq6YUYThDE3R8kqdBgzgtSNpzd1BQRHervd2MSd\nF5SQ5A4WYzEbop3NpVYvYFiHWcF9pD3cHL9beimcp0CtdvoYZ4rErW4J8MDo\nnehkYGv3YQsnqSlahohhGG+O7fkLqFGWQvTrNRm3OfBAv3Mr+MTW4usvnG0Y\nP0M8VuaDUD7WepjeaYi151bDpJq2ssJfW/k+fV95dKQr5Qk0vhGKfkbi8rFu\nA0cR\r\n=YZpP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9eahRKtOnkZKbuKuDDpuPFqQcqm5OmPI9yQii3l8JeAiEA/fAf/e3NTuA3cLimwjlzkIxaBipNYqIAXd38Zn9Y6hU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.19_1601690015651_0.4574588219723621"},"_hasShrinkwrap":false},"1.1.0-rc.116":{"name":"@leanup/cli","version":"1.1.0-rc.116","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.113","@leanup/cli-core-format":"^1.1.0-rc.113","@leanup/cli-core-lint":"^1.1.0-rc.113","@leanup/cli-core-test":"^1.1.0-rc.113","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.1.1","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.2","postcss":"^8.1.1","postcss-loader":"^4.0.2","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.116","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9U9YVy6B1/8k6Aifc61ZHXamPR+J8RmIqqhQqQrs35SBVRf+eTe93b4J/HBwGfdcLLR41dAufIyngnKcjB885w==","shasum":"c4b0463418c18e3f3db31b4e6eb84f6e484e0e06","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.116.tgz","fileCount":51,"unpackedSize":380594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd9mmCRA9TVsSAnZWagAAAggP/2kRsQ1rxajOJZOzNFZG\nLKDeKYZb9GVaCmbEyC2nY2SLgePnpGLhugrk8+v+b5+OyUax7C5qCkcKa7/r\n99jg+1DB8O42mYUmwhNocKtMfSpdP8LUSmIG3zrGBuGbiSiEs6+vVdMNeTOy\n13eisY1phyvyqSMBtxYH0De3hZy9meBuILlqvBSVJj45dn814NACsDPBQtab\nh1DXjLRgCrXS/pnpCbD5GIdE+hK9XkBet2K0G15jT/wGy2Y6tURBzM0g5A0T\nV7MJLA0+fr7OKoPzjTVWEYTng12kHsdGcNZoaK4W3L5ZAuR/8M6vQitSgahC\nLE2a96GttEUinV1Hl59ewn+rUpapUXxCai/4FjKlXZndKbgbaZI1OwfeVcdZ\n8dsZWwzYmwYT13lWVVHuYt8EUIJrZavitsLdRj6UD2ULC3RP49XHtCUYfU7L\nYGMyCuDqVl72r8qN2HpO4k+697uEIZhYOmuV5nxOlCkv4RTes3SxvQnMMQPX\nk8qDRFB1sBrqBR+MHm7beJtD4k5CfTN9fKnW3Qu5jyKVQDbW5tAh5XieI1AS\nHeNIzmgIaH95Y7Hr+6WwCczwN8woS1T+qh80xlT3ytFYUPE4sFJj4lqDZG6b\nONKCbHNATxNLS8thKYylVfwoQe9zYZOlWF+J5yxgQc2M5R7plQ5iPd0zu7oi\nlztd\r\n=9+sp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJbEQ57FvBDKxhoTU/Ihs3zjNk6pcyWeQksgY9Vnq6uwIhAIlRY5LOCTMH09iHVA8/fugyADOOM8CzX2VkRDHZSkxo"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.116_1601690022370_0.9577264976976101"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.116\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.20":{"name":"@leanup/cli","version":"1.0.20","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.18","@leanup/cli-core-format":"^1.0.18","@leanup/cli-core-lint":"^1.0.18","@leanup/cli-core-test":"^1.0.18","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.20","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-+7UksOqh/dcW+mAOLnZQ66SKwLoPjoCiB22s6ncNHwAau1UfZz0G4OHTgkPKk/uuNiCwbmwlJr2ygH6yd+NMBg==","shasum":"a89b3f669802604b1a3181cf2fa1483f7bcce70f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.20.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeLHYCRA9TVsSAnZWagAAPZ8P/0kZVSON2L0EQCaZ4WCa\n5XwF+P5F7zy2eI4YaZD09HDjd+TVyUQz5HaJzHVrL9vbOPd74baTuotqHKPf\n8pX+YXZTxTFQLtsI1e6E+F2FXVHQW7Nrf0KF1jRaUUVfYhNi7AI+oz/JeWVD\nt2yR1kImSc+bRuogI5UNJMjKaEci3q3qt/0kBO2u2w4x1HLgimpQcQJZwImG\nFaGWD7RRVqPq+6SRT9zSGgb9vaauHrUeR0YP7u+7/CdPlXSh+n3bodSZo7XR\n24x88vcA+oKNLX0/99pOr1tGioUdGSjTCC+8xV0emCWnuk475PjV7rSvvoV3\nRYE2V9L9b5HQyCY9T4U0kM5zYzGIvFDiF54EyuaFyPFE/qQ/BPtOWmUmsHHF\n4u610Pdx+a1FFwmWVozzlYANHh4QFWI2YQ1Ier34txxfFECEuVf++QOF/C5P\n98sfZLVUXfNQLkVwP1HcI2TuIuYpEYR+c4HoU+W5/my2AKAVgBV/Vp6iut9m\nUfjj8b/PK44dsoiPRJHXuwrpimVkx8xhmloA3EfpQTWIqQzin/yT1vwovK8u\n4yMAxY46ptRJo9sdZwMjYPK2X+hrgIwKwHdrrOoaLWAu1a0hO2gQxXsBZYYA\nAhKTRy01oPqWq4nC/PNwOjCNvV1djS7+4km9pgrm2XOt4MGP82Bb7m7Eq02H\nz/gv\r\n=Z3y8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh1gBf1Ihs4l00TbklYGrgvH5CMkvZauvcOkdYjrLI5AIhANGgyU41zmm1uLmKwJ5JDpqj7zNWwOd77eYKt8EB2vcX"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.20_1601745367654_0.39848404438014295"},"_hasShrinkwrap":false},"1.0.21":{"name":"@leanup/cli","version":"1.0.21","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.18","@leanup/cli-core-format":"^1.0.18","@leanup/cli-core-lint":"^1.0.18","@leanup/cli-core-test":"^1.0.18","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.21","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-2gWYKhiaWO2h6voFQu51W5xf+9drxfA6YYUgIP9iKeV7kqeQTde/oBv47UyaZRQdkQQZyAL3qpFQXBGxC6b+pA==","shasum":"f215642b8405f0acc7d03d565ea01262f5de55ae","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.21.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeOr9CRA9TVsSAnZWagAANdUQAKH0ehZX6ki8FMxgVI8B\ny63lG+EDMOxubOKi0nH4o4zps0BWIQOPMnBpg+G/SuAH2WN+AgQ+QGS0JzIh\nrjFvbKlvGVxzYZQu5Vr6TPmtxpTQ7BFDnNZbSV6/kR4mt11+2JTA9QWERUgv\n5iUWH5C4Yqxhvva83Hjrzm7Zjl4o01LUpTLG6MbExCb8UWEcx4MNpCyTH9PW\nWjto/qk2T2Bma/pZUqBDfq+1n6NHE/3d6/o3VjwmLSsfs6bdo6xc7Y2Adg4t\njdg+rqiTbo8ODTv4uLflCOhYm5VSG4+Z8mQopzPkdDM3DEtStqY/kZVbcCYi\nrv/uKWsA81UQpo+RqQmVGzA1SpjQqKNSSHO40HPMJ46KWW7a8/C692t0+tdO\nY1UUGrlr6Aivh6Dm+g+6L4OJid+MqxV6wPRiXG6Nz6AFu0bR00avck+Tn7rQ\nNgZG5VQv4KKT+OGKrQ1N8B/IeWOJk2HmfBl/SytK71E1XqUsec12nlGTRgWT\nSUgcwGiuo7CCgUDPTUrwmK0QelvSKg24S20nmLOkSTE1GzIh9j8FccGB2TKU\nRJm7IG6B33eB8Fw8FbPbLxhD01vpK33jZC2WHdjSMHUtEHhT/zdcYlN/coeu\ni5YrpVupVa6KGbP4yNvEiNO4dvInTbmmmUjWO1a4kEbISuNRmCuP9v8Vh28L\nrMTP\r\n=DmRA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAzlYi4BLZ2opLqx5oJlxEM7Ean1HIxMu39lFIZLh9oAiAnlDAO1gv2kgsKQdxSApBV9Gz3ZCwgQQ5W61mCCom3XQ=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.21_1601759996587_0.3029473631089459"},"_hasShrinkwrap":false},"1.0.22":{"name":"@leanup/cli","version":"1.0.22","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.18","@leanup/cli-core-format":"^1.0.18","@leanup/cli-core-lint":"^1.0.18","@leanup/cli-core-test":"^1.0.18","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.22","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zNOQ2PITRVR585W+ak+Z4iNeY/ltIN9QwsUC5PPdmnZ9S4a6/avG3HiCRzc6OoB8xj7MBwoNPI1ZGYtS+VRVvw==","shasum":"0e96c169c4579d87571acbcfc4b89d82280bf805","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.22.tgz","fileCount":51,"unpackedSize":379941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfePUoCRA9TVsSAnZWagAA9AUP/RB6tDDo0xUccOT6okns\nzEbIEi4hV6uzDMFAg0Gxfxqd2NwQ1aGM6IHGaY215B6wofyQWxhN6CQGN/h7\nYivzFFB7G3VnZAwtqKUGYJduKZNvVXrIFoFu9ZX47la2Gk6nbkfIqGsuLuyy\n7n3Jn+UXj2Lo9clmnqYqnF/DEUBFvjj95jz/d3TMBgt+bzr8BrJvGMdAjGqu\nbUrWwFVMFNO5n++w+CvgB93N4r2up9tn46/zq37AsmYMTIJvu0PjuhzSU61y\nrcHokL8wON6hU9nXF/A8D/ipMFLuqxKOOx11nAWxL4w9+EQbiy1pRbIdAvte\nvsQbXIxWhV+bpBT7G+f7a4+vWRy6g4CvgXVNy7K3QFSh8K/HeGekwdFvngRo\nMZImK/55bWzwFPiH2kJb130e0JatJLhI1q5MMTVTh8jBUOMDManI4tSOzXbL\nSYnZL1Fj4LmMnzNl7GLhodbnLxkL16HPAuONvBbwCmG9LxtfWTzYcz3l2+cP\nAXpCQFLB+im9BM/CIuOcDJ8LiztT9LBgTJP/BJQLCduw86sWFjLdTtiNzCNo\nH+fLy0ZkOwXQQQxlmAVR51keywzddTTHM6/YP3X2GyZ0PZoKooYfVbL2pI+B\nZ+qMSVq4ehux+z14X6tCwbNlBZeSwYwHaAVT8MuhkovvSEVUd/DWgL6zlDIn\n9AWG\r\n=fM+c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3mCy3duUelgYDbPqSBLnOJVtcvlpuELEp9BvSbOgqUwIgCkmIhfmpbbuQ9HOTruVwLTHZ0na5gvuN8/xFD9fXAfw="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.22_1601762599713_0.3076282308068279"},"_hasShrinkwrap":false},"1.1.0-rc.118":{"name":"@leanup/cli","version":"1.1.0-rc.118","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.113","@leanup/cli-core-format":"^1.1.0-rc.113","@leanup/cli-core-lint":"^1.1.0-rc.113","@leanup/cli-core-test":"^1.1.0-rc.113","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.3","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.2.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.118","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N1Vsd6pfErng1yVveSHk04OVAbN+xSz1g+QHpyqyTCftbkFussJJcQ8qxwcJTRUychVQbdjVkJIMBSYrwumg6w==","shasum":"839e86411a065e54515eacfc7d99d653049ecf48","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.118.tgz","fileCount":51,"unpackedSize":380597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfePVZCRA9TVsSAnZWagAAV3oP/jXk6qBjaiPq5SkRnfyF\nW5s8BNtAC8TjmOqtEcFl5xWTHbX6KpIkEa+g0VRZ9C0ekOv0qlH6aOt7c5j2\ndApqer1DUW4DXHLoYYHfuznqevNnFhMnkzhAt+t6glbIHwJyZkSua/B4EQpR\nC1REC1faJfOHR2/tCQzflDkdmO48KbuXWb84+0Rr3BBU+QB3vTPP11slAJtT\nsNKPtd/GRpqyQB4CWSVtLA7vkHbz43uVrDufNRnQuIKdQIl+Ey+BxU9Ko7Jk\nX/XExAar/uxMMNV1x3QGKsIhNtXJUi7MjfbFm6b0kd170hoCv/cru3T+UPN2\nolF45+/LbBHGmrWUe51M90DQsifFN4SmTPKVGXdcg5OIkJkbxpSDBbtaRKYX\n+9amruBZvFbkrcV6vACw4T+QrIbh2Gd1vteoNZ5IfOZ03uThjkfwXA+DfPWR\nf5A6SUDzed1fsnyFZNHIH1lwvFeLcOPyiNeY6OdP9IUBV0es+Yc1UpJj2YkB\nIe6/ucdkAklHp4sdUIw4J7/DB+cZbfo5TiG2zelbzeQFqRQDFWuLOW5jgIP9\ntOb/XfMW20OJQL2M5b1zZe6j2o23Rm97Z3bsxvRxhZIn2tegr1aCV9Ps0QiJ\nImcZ9OGeaGSVqPJ5iR9XeupNFk9g86wq+Q/0yeNnpiLaJ8i8yZa4Xa/OotmA\nwUSx\r\n=zzBv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDi/a+5NGq76XAYREbuCXJO8CvqW3W9uWyIcRVPyMRNhAiEA8smZuYQMaQe/9ukv7+cbLnR3VqrzgEVvHinyFnlbefM="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.118_1601762649039_0.19467988934116764"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.118\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.23":{"name":"@leanup/cli","version":"1.0.23","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.18","@leanup/cli-core-format":"^1.0.18","@leanup/cli-core-lint":"^1.0.18","@leanup/cli-core-test":"^1.0.18","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.23","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Pe5Q8tYkhF+QNpG49r0c3PfgYyVSA/z9mXC18LMQhLjv8FizK1MFK5v4Svrc1ThSX/jT2UES9WT3I4lrA4f2RQ==","shasum":"5e98e944b00974101dcb05370aa00e388e6e8710","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.23.tgz","fileCount":51,"unpackedSize":379939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeUfoCRA9TVsSAnZWagAAMEsP/0dyK3o4/P8no/d97/Jt\nu+y9zRyc6iEpTkO2wEWjob7KHmNRtXRXIzqxFOPHs2K4lGKvy3dcI8vFHfmq\nZ0SmH3cGoDMOUlPk2vxiuMDcOoQDbwNJg/5RvjtcwqD5NggGBSXZWLmZ1ID1\nSwnDYM3BLyCW5fMjKykmxDZQnxrFUVilO/K/3fE3J6QVbilNrw4Xso2OHtvu\nij4CKrhHy5JwigMecmcnuttDQA/z5eslPAmuPAoxTab9u92dLLm+HDfAduR0\noCyexZ4mqZQH8jOaCWVRH87hXnFybgf20jvaT/45Kw8MlvSighV9Sxz6lECY\nWVNxsKUJV3J7mapZpu37bJ0BRpBRRuf7bu7fVL6/mLiZbkLzTIDK2tbpmjCU\nbDFZ9v6cKMeB7gR2cg6kUpN40wSOaN8lWKnZ+KF2scCo+znfG6Uftx3m6Yq5\nHFI2YoLSVX4PS98xxUr5oVitU0sYyOLjfwb2PM/kDL8qslNurMchq3HVZ229\nKgBBxQWxYuv6ee3iJxzhWB3KrLoH7qUh/DwVppez7VUty52kKnqevsA7ciTX\nBBvdy6735Ttf09FWwTSL8qkXS7XbYMzTjh5EVINXfeJFx1Xp8IY2BWLhT1JX\nWa7HfPjZN4kQd1shzQQwb3EM2gboeU9d04+ueQ22iA2pv3nR0b3dWeYgIEvT\n7qno\r\n=snQW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHujGvBKaiPQVBKlEDz5Cy1W5YdCLsmlsuMaSSx3h0s2AiBcjcV6yCHsr0EGlFvtGfBpgASFGZMOnpPdJH9RfA2wrQ=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.23_1601783783826_0.7233465875561456"},"_hasShrinkwrap":false},"1.0.22-webpack.2":{"name":"@leanup/cli","version":"1.0.22-webpack.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.18","@leanup/cli-core-format":"^1.0.18","@leanup/cli-core-lint":"^1.0.18","@leanup/cli-core-test":"^1.0.18","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"next","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.22-webpack.2","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OrmTl1F66/oQeL5e/ntopyl7fnkR94uvdJY9a5tXHI9Gf3pDGzJRSTlcEe5oziziuKPu3F/WsrINxYzq78XUcA==","shasum":"8f4db536a517650790563225df2e739f5173dd5b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.22-webpack.2.tgz","fileCount":51,"unpackedSize":380106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeVv+CRA9TVsSAnZWagAAKo0QAKRSnzNavMl7pt7zNaXO\n6lPbenn8zjB/PSGrSWDl7ydtQAbsZI17oA2JhJ0ktJNpUXsste9x5x/PVCFu\nGZHcgY4G1NDLsAJEjN0Jm6lnYk61gjJiY9O4rOZQOOqWR2IMCSrn9devOZov\ncujfmigvuZ+tISzdQqBm84BkUm5lrJzufJ784gPsQA6OU/LKBbRucAyVlc3x\nQ2WlWDjWuKpINB3FRGJQL+1+zm/CB522Y2pcD6QtsmHusGXa39jJ06DX1ZgZ\nDO+IY+tR4XVkmC8LMPn8r5N5qV7iWzbhDBNiBx7wYs9oZA0v+UwO2mVG/Li7\nAipIDHelpHEzaUfOLe1SH6zGCUKSaSEGIccdUqhs3tuO20LCYHU+8WtGaSsl\nVIHcgAW9STtt1h4TV2ffB51/4ooTCQRHtCY9WOgRm9qZFfERWQeJeWUqNWpx\nZnuyGVD13fOrieYFKuLve33/0i1Q1bhYfcxN1Vm4vXQIvdNjnI0hEAY21IFv\nKCcomQHX4QAu2yAX/2m6uvOoud9rkpUHVMbWkzpZmPto9mXyLrzb8HjTpSFm\nVsN+ngwlIeYqQvc7JNGCh0yCKtkzVfrea/HDMQgfI5Ml9BYL/YF9uqhYQBYJ\nmCc7YRvq/EsNN/DV/9NyugDctS5YI4zzYClbb4KB+SkEs/usIO86oztch+xC\nsYUV\r\n=f1lV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBF3su2OZ4PPpkiaJAu4eZeXcnaA/5+kK4sDsCXYlEGwIgNnKaLIqEoA25p7xoXfRt9JoSUG+cvlq/JhYeKtPlN+I="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.22-webpack.2_1601788925748_0.7523924864860345"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.22-webpack.2\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.121":{"name":"@leanup/cli","version":"1.1.0-rc.121","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.113","@leanup/cli-core-format":"^1.1.0-rc.113","@leanup/cli-core-lint":"^1.1.0-rc.113","@leanup/cli-core-test":"^1.1.0-rc.113","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.3","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.121","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Zci4S3j1J3Ng3yvd9H3/RBGIpGCK1bxFFfqFFMoVNbUco7Y+MEjZB/aIKMXxJk89VoIGWtHGT9HYXiwwqM+k9w==","shasum":"12b1f238f8fe200cabb385f14a7e153e0d7e2a61","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.121.tgz","fileCount":51,"unpackedSize":380595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeVwOCRA9TVsSAnZWagAAwCkP/2EOdkk6GunJW4vORFuS\n7rTUoVXS5nN/sJewz0M3VgnMLBPhdFFcnlysNCFryvRZu06TKalYMqUgGYo/\nKLZ0sVrq+lOB6WHxxgNeekB+gMNUkN5+A/UbzOeXqFQ9MQ1YRKvLdEuZSMXs\nKQBS8wHdhF6UhqSGKFOYaNH2YF9LjQA/0RrwjiSB8/s0GvpBuRUN02cD08X1\nBpF9QMI1424GHQRxpRKLOVPAr2ej4VoVdaYMfWDGwN1iOf6wFNne3klHHwe6\nbtYVUEXLJhml3DvSkGFP7Au1p5QnHTIYpJCAduIjMivMKsK9eD0xkQw0ov0Y\nA79KhkNbFOPLJMF2IwQxwbciJtg1Gj7kj6Ivem2iGqCRpU+eH6aH8vbVe59B\niRbWi0TMn/Z6TmoevttqAICdmpf0/MMZx8QHUafKBUFpctLNifvmsSp9tAVo\nvIkeeugJFWp7WS4S+ThrU7fuhDTQRGHYfEAdfhGm+/iZd9/Fz995Tbe0wh7H\nS+xBojRdA5zbted5sXiQLhZCNjCI+v3EOf31ltcxJjwheFgKB0xI6aW4BE6A\nYwf1X7th7ILXQOZiwFsgVD4rVqKetzvEFYcASkPnK6UtGcOWkgiOhvY9DJ6i\ns0auB2KTHc6FWOvIm/Cge7WeR1x7BNK0LTfA97slrOsrzduzUS8TwbnnCSq+\nJ3cV\r\n=7ZYI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDR55TL41Vs6jm2xosd81wUDocGn8X0jDdXU5/ZD40iMAIhALKAAC+j/BmtsTnC9lA99sZcGLQbCKe04ZxPRJNEvEnc"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.121_1601788942430_0.7899327793650466"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.121\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.22-webpack.3":{"name":"@leanup/cli","version":"1.0.22-webpack.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.22-webpack.2","@leanup/cli-core-format":"^1.0.22-webpack.2","@leanup/cli-core-lint":"^1.0.22-webpack.2","@leanup/cli-core-test":"^1.0.22-webpack.2","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"next","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.22-webpack.3","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3mDJ1HO9R2d6ap2uI9taSZqXtlAIzBvcldGZ0K+wNqWf0zSZBJLuxQWFoA42Q8jUlzFa5SgfnkHj12w8BvZSSg==","shasum":"21331760eee94709cac477d7df97e9dec9adc0a6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.22-webpack.3.tgz","fileCount":51,"unpackedSize":380146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfepk/CRA9TVsSAnZWagAAIrUP/RbUSEo6RHIokYhw36Tg\nmJDan6WhJ0BinjfXYzMC3HsKHY5JsUTai+acy/PSV8iZsThT8tNmHj/3kBNw\n2IC2F2SPRnv1KWX8XgvgLg7BMxemb80q1SGfBmK7xwiToyI1rsql96olGol5\n1gjfRBvjGL2KZOWr+MWEXwMLg/PB+MRlOiJE12xXKuP3O/AKx252rgs64THb\n/QgVm+mYIUjuZRTDsyDZC0Lqb32dQZup47K/L2W9Qo9NGzYP6iAWwh1RFE39\n/pwfrvky4eNKerSx8OQt3LdPhpwdIuffOqlpomaJJO0MjZbh9BgdTMl5AyT5\n/NNAMQzep/ReHpaQU0v8bRrcdms9kVr0JQiasPAUeWXXM8fa/XAUrxpuEwIw\n8sPopsOJvwctDyCnCzFSfCiHSJ2EdbbsTi/GG4OweQ5CXgjt3gukmFFrbbEp\nJ11H2TtJFLJEZPcGUT00eh8HAr4a3QI3Q6OaXi0rutfZ/32/FS5j3owNskHt\nmdNq/qQrTltHccRIAseIBEJqlaeNgjXT45qymkp/HCYEqeNWFHUjGPyiU7qa\no200+p75rI/WQtRorVN4BLlPDN/+Pw4VZcx8UlPmbrMLfRLEJN1o2G2j1/oh\n1eGWi05voFV8RcxLzWvx0a3U5hE21mfwaaJ6I/tTrMJ0mQRo45LE0+CeW+jn\nGxBC\r\n=r3ju\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWmWwXZdFhNDfYVRXdUbAVpsYPzDWtlmvAf1PqFojHnQIhAOHb1in5ya3vdEv0gGpzlX3GiQR2SYGpBF4lzBSt5NjJ"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.22-webpack.3_1601870143016_0.8344552936066869"},"_hasShrinkwrap":false,"deprecated":"The version 1.0.22-webpack.3\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.22-webpack.4":{"name":"@leanup/cli","version":"1.0.22-webpack.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.22-webpack.2","@leanup/cli-core-format":"^1.0.22-webpack.2","@leanup/cli-core-lint":"^1.0.22-webpack.4","@leanup/cli-core-test":"^1.0.22-webpack.4","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"next","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.4","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.22-webpack.4","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KXQ92lrfcTtGe6Izp1Ui6NN+qyvcyRNBy3J0R25NZZQaB+w4P/SqfepCqwjJh7lNOsd37YE9GuZgK/uJRF7y2w==","shasum":"025fede69601f33fe60d8e76d621e45d12ea5217","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.22-webpack.4.tgz","fileCount":51,"unpackedSize":380146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe/D1CRA9TVsSAnZWagAAIJAP/2T+O+QuLgrAAVuxDxRl\nkGTo8xh0STz7oedkad4z92Kj5T+xvrumjtFRO8WchiAAuuxK7pVWL4wrkqfQ\nCS0x9mR7vh2bkNF+iwSLFDn8YXxMNMhtShFURtF/an1n7K9R9tpQwvJSLie8\nGyXPXcA0ZtasadWkvS2tbfeYeNUdnnMxC0x9I/R56EjXDfH+otkLiJ7Dvu+n\nnJHkLdzye7l1DKW1YFNFEqZmugqw6SWOzAcs0yly+KfR+277KwIsk9Mz7T2H\n1UXHZ1cq/ozupKMoLZa+R7vo2aFyBkgcIAyRjAQ2lDg1Pxmgcx+BtzPsmRp+\ne59+mbXty88E1ncd8NpERgEb423bkIUjhii2+dilC/FLrqpVWASadNPMZdeO\nZ4zlle+D0PVnV5lrlpcP/B0a5EQN1tBMouo5QIvnVvD+4IH1EQiI6npgwaTI\nr0ZlkaKjzordxF9x9QLbbRpLMnhtrSym3HRSZVdbbX+/cYfPmzuDymJwRMFH\nO3Poz5DVkRoMdW8OLy+imF75cNgljjFXIa+ZaoL5PNOoUzaq/+cjA4S1RBBn\noVM7u6f/038cPVRYXuVDUaz4cU7Z4nzV3yY3pOZK/VN8/FH0ulM6ldqIDhyX\nQMJid9UTaz/8ZH9G9F+19bkO8zNfQQqaGsPO98TVmif5AOm51SatJpD7YD7k\nsu7b\r\n=m2Zv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbD1TL8RskKcseKEQIFbC7DcnE3Byzwn64NyxHi2QSLAiBkdl3Zs5H+A3mu2S+xIThL2H/IJKLEjf2fGk3UDt2pMA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.22-webpack.4_1601958132500_0.6402622228503649"},"_hasShrinkwrap":false,"deprecated":"This experimental version of Webpack is no longer maintained and will be removed from the registry shortly. Use the version from ^1.1.0 instead."},"1.0.25":{"name":"@leanup/cli","version":"1.0.25","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.25","@leanup/cli-core-format":"^1.0.25","@leanup/cli-core-lint":"^1.0.25","@leanup/cli-core-test":"^1.0.25","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.26.11","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.4","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.25","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/vumsE9BfJpgIoQrtYbMm91Cid1SLPDhbb5DpGQcWpcIEHVD4E2mmISaASFjLKsznASLWUh7//fEHhdiT+KLOA==","shasum":"9ec049d08c17e9d4c5fca79537b07259e23f7bda","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.25.tgz","fileCount":51,"unpackedSize":379939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfe/EGCRA9TVsSAnZWagAAC4QP/0b8Z3DKptJAHtr2VimU\n4ZXN8dODzqBgciQs/yy0hLLzfvNG4Qk7fyXcX++De/Hnb4hUw3UHIvuZa2fD\nPf3q5CnBN9fdf8srFej+eU++yowGsz18DbBAjeujVDBEgEb6JZTklCd9UoG+\nCB3YYIUgRw0Fq89g33lEuXW8k0fS3k+8m9GiV9HEcxrUhIW8nQyLV0we/y5e\nXETHpU6/1+QLPx3qS5aKrAZ6111C6GLiZl/KATjTx5iz2+CcNLY+OD4vFk/+\n4Edlglax/TcihYVCAi2PITXR59AbRwu+mUaQTnCR4ouBqgkZFY6thw72okbf\n12blcj0Wu0VUFRjrayyN7Ow9jec5lFdKo6wEoqT8jIwHQbeZsvIlffeOochm\n+JKC/pBc0tmSd3QDvVNuH+7lk4D00Y9Bw90Ml+cv1QCNQo0XgZ90uyZZqJ31\ncqs2HtVAkpACcpGV3sLiYrRZWfrDsh2Zrz3bjwB8CrhIh5vRO2+y98xuIGwy\nXIMekt9DNuNfc8Q0/Lz4bitJCsmpFnywtGWbSS7VH1NRGcgO1LbIyDYhmZ2x\n2+iG0W3fMY7xrV0RIHgj7Wya9otoW7fUA0VIlUwqNeu/WnA22t8ZVGMgonle\nMIAHjIkC8djr6E8mwluecPGMCjlqyiQx64kIPksmu4rr7UbYiVWTKCTWua4g\ngGCz\r\n=7nPB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTOxbRrpmo8O5E3pWvSc4Qi3svhS/mPAPhIEyjVj9WTwIgBWVujyLKdJLEXaVbLqeG2LQmCpXp/IFJd+i2bgJkk0A="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.25_1601958149697_0.6298319292384751"},"_hasShrinkwrap":false},"1.1.0-rc.122":{"name":"@leanup/cli","version":"1.1.0-rc.122","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.122","@leanup/cli-core-format":"^1.1.0-rc.113","@leanup/cli-core-lint":"^1.1.0-rc.122","@leanup/cli-core-test":"^1.1.0-rc.122","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.3","sass":"^1.26.12","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.5","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.122","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6l5SiDovcRVhUIuPmQNkvhrAMDl2dMgXzJArTF15bryax5auCOeAxSzPxlxeGRqDxRsUyLxJFlCuqgPtSLeRMA==","shasum":"36f2604f1aa6fd5c163119cc65ff3aaf802c85b6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.122.tgz","fileCount":51,"unpackedSize":380595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffE+eCRA9TVsSAnZWagAAOB4QAIhuncdk5ZUQJbi2VGDH\nSiUrbhVpEXIt1LpbhP0LEKh5H/CWSIK0ZR/B9FbKuuZ4qoUbNG7DnJnlvW+Y\nIgwLTpAhWRMLIXZliI0SGD6T7Cetk3s4SDWTtPnDQavkcgghjEai2+Hcrv7c\nPxXKcBszoZ7BH8T6PK0qAPGjgxoBCu8p9Gsr0wWHjUuju2Dfkwdt7ZTbBoH1\nYW87n296OWZN4KFwaQd58QWL9ZXs7NqHm11jT34t2tgbnBwxyqyYpwmgUudy\n2SveL3kBh54fYZVQD01nPvE6ZCGDp6lDw3aReLYp0SHKU8NONEIMhlGKi6ye\n86MreruUq43YNCRKYbboEu5C6UXkUkcsgH8M32X/77bSjmaMMqk9s/eEugU4\n5qI16NEpo3vMsd9Kh3mBaLprL8W/8N2Roj0jIVgARrv290G7hqod/s2jtjhh\np3qiIzOP54p+GRlajog1MEDsN2ncJ9U3oISHXsQpouiX2GtqMADVFHgukVBb\nAoO1aRMv1EL532cBBQXfA89hYEVMtKt2IKaoCTrpaz+3QfM0+9kSsASuxkv1\nePETMdtF4UykC2w2bGMadsZ0AydOfM08rORT6RglnwpJ8E3rQ1OmZLTnm6aD\n1R8DD9sRVBZ/YTcaGFdXarnxyMpTFX4eTUDqR6vtcUhICqGs6bCIQVHXfXoU\nF5jL\r\n=W1Fn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDipfp/jsWcI+6R2vC26N9alDQR5iKjnk+i7AcBe25UFwIgGqUUviecx4nyPE+SMNdsw6+jMexRNT2gDdagHbgn8MA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.122_1601982366387_0.4395673366473394"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.122\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.1":{"name":"@leanup/cli","version":"1.1.0-webpack.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-webpack.1","@leanup/cli-core-format":"^1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.1","@leanup/cli-core-test":"^1.1.0-webpack.1","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.3","sass":"^1.26.12","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"next","webpack-cli":"next","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.5","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.1","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-3txhU5N5fyuZ5FVyljVDU2Eepfgo29NXOvD/Y2Fks3a2jrrrfI90eb6G5yinZRb7NogXL0PqRHQU8NXwvSs3+w==","shasum":"514cf229293d671837e5c42c3576c0c97d7c35d7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.1.tgz","fileCount":51,"unpackedSize":380604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffMSTCRA9TVsSAnZWagAA1dwP/i9/X9LkoiZpTETDXBXg\nbwYvUvS+L2wlfUXO6z+8+lIDOJ9c5mvqcr1iavoT/CUZx1F/fPQrYrRL+z2A\nIO/bqDFTuTqioEYix0OhfEwhn0GSSNUZGV6CQ0pZZGmwpJC1wAezm57rc97p\nhcQF0udHL8JUX0cW+Bny3ZHrtw7n8FGhJ5d7PZ8oSVNPLg8uWhNLl689aabE\nhXN/KeaRwx8IimFMcX9m4+0jppbP0oE+i1FI09zTka6RwD/sqW4jCIVYNfIo\nNakjSiUYUp/NN3Sqyk9yyZQBwlbaQx1pVsfsEbUaAs3Sn9EHRl4eXfLuFXxt\nDjDuyk0q0/cb9hr5X/4tIjk+gbEU/h7t7jtx/kVI5Ct3WcSnckyMsYafe1XG\nBckkeDMljIYInDO5r/B88PTTADHY/kMmQbBoRbfXo1qttsRxvsxpJxibGLnW\nD7xD0bIh0WX1NTY0pQpIHJIB7G7k9CxTzotuKrg5idO+DZFq7hBQqdTzm49M\n2VYGxDPKqJ/T8MaRTC9QqT3JucAqvApUHYi1xQNfo5HPBNr1utwr+HmR90FC\nmBjPIkV2s9I3x2ZqtY9fe4Zf3XDM62Rg9l4iTAEkPR2cJQJz7c/LsvGv+J3b\nKyfwbugNyZS3Mj/JBkgMdli3lvDR04I4wsxPtI87n2Rdl2JltIzBzRf8E/mA\nfS72\r\n=tthV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqSyZUJIuFn9qoHrAh9DHeq0GnBkFBsrVEQPjVRm+ntQIgckA2kp6vNggkQYUZVEog/5xNI4yI7GJqmjlEOmJvYxQ="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.1_1602012306807_0.21899097901988585"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.1\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.123":{"name":"@leanup/cli","version":"1.1.0-rc.123","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.122","@leanup/cli-core-format":"^1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-rc.122","@leanup/cli-core-test":"^1.1.0-rc.123","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.3","sass":"^1.26.12","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.5","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.123","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-KuP0uOrdX9TvxNv9Bk7eqKyM1VtBCNbS7JU++wGvQJf+xWe/3KqJRu33iWffqVjond+RhhQ7K8rexSFJSwuXxg==","shasum":"c1d3bffb69508a10b675e68ed8c497a66747c3e4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.123.tgz","fileCount":51,"unpackedSize":380598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffhNFCRA9TVsSAnZWagAAaGgP/2j/7vZRXdn4SSGxnm1L\nXvv996G0s4XnCte7UsV8kg3HCUMG+D6e33fKt6HUVe5yZg0xdFCsVNaSnmrA\nkgUDovZ0WcrxwJwm5i0vO/sQLNxGtL7qMygrv9bKjRSBG59KXUVZAM7VpxOC\neBGzNWNxoF0+sY1CURmAl7KNhxJg6jL34NfOve7QPDZDsI30OyHk7nIEdmTj\nBVtaf9eQ0yUO4Z0nfOjdpgASL/1ZhILPFndS6s6GQtEzxnTTZqsrol3hyKZT\nSmAvF073YNrHNtYvMrjzTBMbtstl7Vcfb5i4+uRx1KvDSlp5T1IlvIliw5Zc\nh0ou21rUy/1TurODy4oSidLAguuEZ0Nw+DRtcXSYwOldybGDSd53Duv2PzAC\nlOU1QbdAFa1ZxMMY5if1LiQzi8kTbZMVkPz/8WT6D+jYJXo7oh3MiEkl0PWX\nFncFia08ZZ+cuZgwdHmK6I/7QWy7kTbrQutXw0PbF56yLl12/330JImS9Vfv\nFR67IZtcLjaunYjF1y+z2GGUHIlGjOBKF1zhkJ1R/8A+02WdiPMZ2XXl4A/h\noYqH/NjK7FTgbCONt3oMxmC2PW6c42TGnIeeCiPNHLT3jbptvK2rTe33stI4\nB3IjUrGd+TuQc0CZBW7MkSsYAv85Q4r0mF3uqRbxcpTQQZHx1goWoJxq2GKc\n7If/\r\n=OrNe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAQGHEQV80+QYbDjhQ6g5KVUJzg4vvbchpAXfcz5d3ycAiEApeVzJYv5yh8KFabTISzJE1xXpbGyrYoSn7LraeqrHvg="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.123_1602097988441_0.21194726336255298"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.123\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.27":{"name":"@leanup/cli","version":"1.0.27","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.25","@leanup/cli-core-format":"^1.0.25","@leanup/cli-core-lint":"^1.0.25","@leanup/cli-core-test":"^1.0.27","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.26.12","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.5","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.27","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-AvWbgxOeYfCBlwtDBYmmeiyZ6G6u8pOptkhwKxZwh90oMDPXNBDIRCT+pMK2GeupRsn8GQCMf8G/0WFjQF7tWQ==","shasum":"865e0bb17f098fff27fa368990eed71e69dbd11c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.27.tgz","fileCount":51,"unpackedSize":379939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffhNvCRA9TVsSAnZWagAA+t0P/ia2R73bOnDOHdJqD3Wt\nR9FKE1Bx1CqohBv9yo8l9SFnx3p1k1PDK/ekoZsjUdAZiAqdV5poBhhan1Jk\n3F9kgIg9QWnCTqRZIyK/xXRPW2L6OT+g9j9tdTDCxmG00k5Q2/B7vfG0bzyS\nIu8QaCbB7bmwzWRkiIV1PLs9t+VXFK+UV1KpVUJXvHnm7Kh8xVxZsTd99nyU\noZMggOC/pVgkMidEvq4zuERnwcOc7TeOjij+PMylMyGweia2X7PQ3tLwKd1n\ngjcqnyEG1Se73RYcYLRY3qBr3bJBEjH2E0tKEU3OSFTBkISfQ5SSt2JEElvp\nqbpMUA7lQof7D8m3yR9X0Scl1wv5IhqHSXHXcj4M02V5EEBvkjRyYvpI9VBZ\n18OrKo/Eu6mS21ZBYHskyco8SS2ZEIGiXaaFZezLVwWA1R/Hyflo5zQMFqVN\nq9Vc1gQMiDdIdyLyix1oiUIu96CQPY70Pfnag9vCBIqzW936ZizidvVYtxyG\nicNYUFj0JfSMIFzxLYU7HIp46m+OtXLYU2kgTvrpR+vXqG9ZC6i9D25iQWrk\nmNfxuj04iCICuxWz1cFb2RkEB02xi9nK9AZlM6KG08TGdNPfhgkbbKJ0x/R+\njxqYO9w67qdVCzJMZ/+w4OKSsjJPHwCOtote7sMFaTQ/b8B1LX9mLgpoJqDI\no4k7\r\n=GDb9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC3HS4P5SpgzyoEfJFDWz3xFAEWYLXP4nNZkU/EqMTs1AiBhyFBoYZH4OTOKPHQNfZEOuDQuYCh2DfOIW6N+OIF4gw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.27_1602098030580_0.10482503237666285"},"_hasShrinkwrap":false},"1.1.0-rc.124":{"name":"@leanup/cli","version":"1.1.0-rc.124","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.122","@leanup/cli-core-format":"^1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-rc.122","@leanup/cli-core-test":"^1.1.0-rc.123","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.3","sass":"^1.27.0","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.6","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.124","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-NTXOGzeXjxMHOm/kXH1JHMiZIQFtd3xbvg7aWhpWTK2ARylnbQ8zXuVYkUjpNgne0gpcek0R9Hq8m/X30QBcrw==","shasum":"27338816a935aece1e6c0b531467bb63e5fb2aac","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.124.tgz","fileCount":51,"unpackedSize":380597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff3nyCRA9TVsSAnZWagAA3O4QAII++PAiD3jvCkFyWYFv\n+3yk4D56JKqlXRGdx1yJw2/NDzL2tezwYrl1SV3kMAZZAhMZdS5EwsT1NKWj\nVput7Urw/Txt/589IGwgoasSmtz6Xcuv7QwO63nEuy2PKaLB925CGvxzrBfU\nj6H0BXg5Gb5Rt24w0LfOCqjSUY2LKMeo5OFyIzFxVcPbKqoClq1XI7MwUl5T\na4kNuIlcsOfML/1T4kk4WB4MY7p1bbt1rYAjDt1KLWfX1V1bqLyaMVDf7uh2\n9ByZZ2pyqiBHYiteeskvSsdftcoDTyG6pthicGCkfJHO6AtFZUZPiuh9N7Gr\nc/1lyK9FYllAXO3D7X5EsxEn4Bdxk/S/+zIDMd4AUgqFn5NCYgHY6SJDyQnS\nd2w58Kbik6NukNYAztMBZzS5Yj59S7yznN9ieAbEoLq8RfYTnNa8Fx7D/7Uz\n7pDD409DMamlpedH5K6BmXLso/gV/wunEE79bkWGJ9P6sKUKzeyVAhtuuQvF\noEVRQl3kxNCyTnr3w3Q2je/IbTLg3BRfdLeW9CMJs6LiF9C5vgvamFbhhpiD\nh6PatMB5b/MUGJPHM5NbYmktYHXW5n+TGmkK5/PNJDU4FZbMLesVutodkuP1\nHMf16lVJB0JyKCFPXXMhkVQY2IneCCcQYAIOKg7F4mAxosBdT/rJdHZoGd32\n35m9\r\n=haD6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHWzk3I0RYb47r16bg2RLiPIRMjm0KiQcreJpYr96muzAiBzbXstiscBF+E9JNRdTbaIyRsCgyYEua75oiRPfesiKA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.124_1602189810199_0.5317424602043901"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.124\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.28":{"name":"@leanup/cli","version":"1.0.28","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.28","@leanup/cli-core-format":"^1.0.28","@leanup/cli-core-lint":"^1.0.28","@leanup/cli-core-test":"^1.0.28","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.0","css-loader":"^4.3.0","file-loader":"^6.1.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.1","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.27.0","sass-loader":"^10.0.2","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.6","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.28","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dEKBlG7JXKSle5XL4tG6RN8/Bts2bnw7ljivctoaU7/6QKUBA9gBLjD6+S0g2OBelMbq8XWi+qT96aHto/moPg==","shasum":"191f08a57ef0f999bc84cc92556066a70eba3e9d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.28.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff31mCRA9TVsSAnZWagAAq1oP/27koXUxUXmHKqPcCNb5\nIK3wND/YeaiZYJ9H8UYjVXn61qyZi9TiTlJ/7XvA1BGH8FA3qmjCyLc6KrPC\nlw6EbqoJPH7VY0r+qfrKnoAdUmwhp9sbLRL/QY00isxFc1DXvihwZusqtjmf\naW2agdtANhs5GmKr1bkOjdR95E9ot30wlnXdPUBKiRsiyj9LaD5Nxm6WmOp6\nwJXx9HNMUovaL3hFtH+2vYdBzkNRVoyNxb17qwsfSzafzPPk3225ME8aLdFO\n4/96lkpKd9wcJ/4dcQ0x7xUO7arYJVdTfhjnD6in8TQs/kbIjOKqy3Or/dbV\nM/ceuCLzjA42BKnViW1aRCquLuTMU5z0u9kbI2JRUEWyHJ96FsNGz67KOQKZ\no9/qR5VkTB/XqYBgKUuT9GrpIsGx52kMbD5YrLkWRP3Bhh+7ALIGpOKWbZDj\nij6n5ckvsf8RiU5i5Vq6kr1JZsr6TIYfz8hBZBQrRWVapu83oA1+zgIr/YdG\nWt551nhllvTRkfbMi9rEBbRv31s0w8pbkOwWfGoJQObKwzPtXqaidInjDImj\nGreUAPENAXY7hEH0eGNC/aLFXh/ytbikcthGJulJV/EAa0BwYvv76xGRezSa\nBPpwq5cYM2CCu66oh0n2Wn3OEmUlqZ7erYwX7G12OBzvrGAV/ZyHZZiXUX1R\noHYE\r\n=K5AF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClmcJHyb2tgS4BbpiJMjpRGBxvRoeUuF/MmqkV0PP9IAIhAOoI0J7C7GrAsHO8CjFM1iLNIY5hfeMsp2TBo04oxJXT"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.28_1602190693892_0.7531700858265977"},"_hasShrinkwrap":false},"1.1.0-rc.125":{"name":"@leanup/cli","version":"1.1.0-rc.125","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.122","@leanup/cli-core-format":"^1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-rc.125","@leanup/cli-core-test":"^1.1.0-rc.123","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.125","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-H9qm91yyoz2/utML8d7fAQ9ttgUBnQegfE7F7WtpbjeKokH2PCiykhSyCzzKspDZAnro4+/vy3i8J5fCAGu0ow==","shasum":"945fd8985e981e9fa1ae3b1c2621523480f249a9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.125.tgz","fileCount":51,"unpackedSize":380597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgS+MCRA9TVsSAnZWagAAds8P/2WUD2eucdCk6PL1CuFM\nSvZlJdNHOdTmhg2kmTdAzGcMBvV9Y5sgXf11ReGx2G4joKnbBuDMET3mdqb8\nhYPWOUlNuws2HXlivI5g3dJY/8NFmozR41RxLzDeOJWIjXtd59GXn85aI3IZ\nkSR2J93lFsnhpoPhx7kQoFyGIwnFdT3LI/uEiIreTaH2nIvyau1ojUH/wQQ7\nQgxdqba/YlfCkPQyMcOaaRaPhJk4pndgD81/meLEUS+2Uz1jjBEHj4LZGBa1\naTT8/85n2tHrRg3Onh/B5P1dYb2eobIdSRAked6ySEYWVCy4lY1c3VBBkm34\nElPDZhtV2I1PcQQ++4Wge0Ji6IYU4zGM/L3t/WH9NYyD0aKE4cYizbTWqxj+\n6ZTpNUu8WGE7bpMxi5zZVW73dHtjFGmoa7C2+YI/IRSSr2Hd6T+Zw08oG3Lu\n20pQDKH5Qp7tsLHiKZtonjKllHoLUW9kytJdJcMQaiubwDrleU4DSeysXlX7\nE0bOyZfbclUrtRhyXYLaXO9n+ZSjnKHe3JRlJZcL/otCRx8akXdKPMGiVu+7\nuCdNjAAgWYlw24UC4WRbTK0+moPc/XTkrAHCElwV7mil0dEUoXxzMKP/+Q6+\nZWvTOe1hkU1GLgddsljKuErJ6y6wObTJb44ZNztaWDmQ3BqNz5L//rn5X5yi\nVe7M\r\n=MQ9Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIESP51EQhSn58iqypNJWLETkWplB5XiudkOWVABnSN2RAiEApZefQEASmkslOXS3j5Ec2xI6ybj7x6Vbod7x21XA2jw="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.125_1602301835832_0.05993734604483003"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.125\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.29":{"name":"@leanup/cli","version":"1.0.29","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.28","@leanup/cli-core-format":"^1.0.28","@leanup/cli-core-lint":"^1.0.29","@leanup/cli-core-test":"^1.0.28","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.29","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-6AWUz7pPpaXaeVU3OVrP4MS4LMIT3D4O6/76164fXlWu148FQnlBWotW5Uxj8Fpqskenovhjo1z5QxJAa5ISRw==","shasum":"6a23e19cadfa2c51d0f5ddf257e7334fd8235320","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.29.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgS+XCRA9TVsSAnZWagAAKrcP/1Rb9LRLK8Tf16j62Fcu\nLaR62FLtOYtpOd/CyQK91nagfZJnpqaFvQhHytbbos7mPt8XS8eWsyyoxkvY\n/1P9e1Z6mMERuN/7Mjf0K9j2svL1wzo5yrQcqXMs0cPDORJPqOkLQNJhKOp/\nSCW9SeJzJ6E6TdKyNjL7xCfH6BaBNzOZagrBiwU4OrYlCIeK8MtS15yhytJS\nBmQxfvVdy9/wfdIkhrxB679cqsFvhnTwx3+jsFhRiP5Vn7GbL9uHtN8teyzV\nlL08HY19h0j3j+5MdVMeu+kMhB4vI7MnzWx3iQbuqRsDlH9CDheZdCkWmO2u\noP27B5CaERDKqZTPoXxKNqquOSddAwV72BNB7Zbtlln+37pMW4FwEDtrIjBr\nog5fwCeNgMPIQRwlwscCJLEYA34SHhdBIcRan7IE/xpFum3lLKpnLeXzubBH\npz2qPXF8cCcakfQFlQ8JzLYOTaZQ2ItGHUxWRGCNhfiLpgRyCYsYlGBBjsCr\nq/xEjinzgp5PbV6kxd2wWaFSlh/9UWvRKILmGFPu2BvyUzrP40i4IxRR5PKc\nMWiTXWR+Le1nWuMb0MkoZH8pgyeNYiNcY8Clxry4a/HCV6J8q7OjgBTkT6kN\n+B+McZvrSFzHMmi3GkBESGVPLBVwVetUKD6zZo2CDP5h+wZOiqED9lc9DZdQ\n15ox\r\n=T34v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH0p9iCSegXkul7BguKUvhqFFsE6jMuwXG0COpNfNsCaAiEAm6NvEgI7glvmd2UrdvHjp4TaPiFxFHeB54Eoc90epo4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.29_1602301846462_0.1508100729395503"},"_hasShrinkwrap":false},"1.1.0-webpack.2":{"name":"@leanup/cli","version":"1.1.0-webpack.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-webpack.1","@leanup/cli-core-format":"^1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.2","@leanup/cli-core-test":"^1.1.0-webpack.1","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.0.0","webpack-cli":"^4.0.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.2","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-EiGNqZySRpEVULOsXKD3PSCDbyvj+q4l6zYVPjpR3kzyQxKDCMmnDRNXWrHAAHFSms0kC2GMzgbSE9nR7Kk6BA==","shasum":"bf50320fe29e874f3326da9bd688610b0d7d8ae2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.2.tgz","fileCount":51,"unpackedSize":380607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgieKCRA9TVsSAnZWagAArN0P/iAQDtNitZsridq+JS8i\nFdz0l7WTwv6Cb08spjEnBJi93fTEeG0DNcYGgbmvK+3AqvggQyD++hR/Dbf9\nroXbdJrhKH/M/211HsfDHGmBKaYds4K9rEKpOf/ZRIDHWBtw0xsCwLe7MibG\njoKRYJVXE6UyL8mlSxhxypncLGdYHVvZ02ApOkUO+MC5cy9rVeX6F4gL4uqb\nO1puqoAOupVMeJHV5uEInU7RIZV9N0KQMptKvLW4p02zKS+KHTKarCuEex4z\n69k/A0fVJHqjEyeYEukUdisghXI7cjze3MmhL/h0A/CSZFma5ibYoQiTmLCd\nWbSaawKLeJAe9CPc/tydTt+pl/MPudDfyN4MKhvFJ/IN8CfsG9UUuZJSYuYn\nHuoAaePmcycPGkxrXSC7sh00Jt74S8M5fi2ZGzVo7Tm0KN4VJUGSe+hMhKyZ\nXRo5UHaGI5ljJVVaAbs6HgoxvRvdk/GJud/u42h1IZE2oogW6lyMnYDD1JnQ\nT3e6z4h9EwClU56q2kgLnOO0Lb5N4l1gaZB5UySlH4WzNzC7iL0qbQwhxGF8\nufAzZtEbRYc6yNgfaJk0a0LiFZc3+HIl6bjsOUntbjx2fVXJdE8aCKt0YsYJ\n8Y1j2QY3dmQUCTG+Iq9jlwuLN19WmGJZuc7aYsiOw4DUG4FD7NamJ0qo63Q1\nIHg4\r\n=5EbL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDe5X7VssBCR3/eHL47WPlSCgXipk7NyOhnILJmtwGukgIgVu7ouwB8dmJ3DYsRjBufjbDFW4wddOLhhQ41xPuyhVc="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.2_1602365321674_0.21881492017164916"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.2\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.126":{"name":"@leanup/cli","version":"1.1.0-rc.126","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.122","@leanup/cli-core-format":"^1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.2","@leanup/cli-core-test":"^1.1.0-rc.123","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.126","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-G9OLfdcWDZ02xaVYoPn7gEoTkjtsrMHNuQP1vQGlGUfFMpPVlVeqvkeiOvuIW30DL1KYazcJCc8Jwap/wtqBxQ==","shasum":"697e5aa2984cd70bd9c6897ddf02e46d91c72ead","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.126.tgz","fileCount":51,"unpackedSize":380600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgsUbCRA9TVsSAnZWagAAv9gQAKGy1yMfDFuQDGYvMP8+\nz4dMl38PFsIjF26SQ4DYZc+zZ7dHZvGyF4zlPJkx2OCwZ1tPmxCTR+ou2rLk\nIGqH0gIcklRCYYayvyMbZwofFb79u8R9LU1083iGneDgLLCrTcX8FzPcbzXy\nG28HCynD2SOvjS59vg/nOxXmdizC7hQhiCWN/v8antZCgd/8ekQdARmEEaQJ\n7/n/w50h8m7ln+I+2PCzlTD4mNCOcQAL7ea5ccMIyO1kFtBuIDtq04uv6NMr\nSATQILyuSAMU+KxXha2aw+wlB+ln8waSban1guXSa+cZ6UvlouvKY6TDwhaC\neUxd/bBYXLo6F4IddcFEpiudlLQVvwEKPcSMDVnRZUZ+GTJ7vhEYmh3bepTL\ne/DJivF2sBcAnYKpyN35j7MCt7bM7UgODYzw9gMMidhsiDasU9TT4z5jFcoi\n3klGNEPiJOonV1QigzDani2fTL/X3bdeSrN0njaL/QW/26ZfZR2q1YLaKY1I\ngg9CzSmcLyr0hLkhL/zBvIgcy7zFvvQViL84Cu3M5Xq+wvFXCXMlc6ddjcxl\nOMLS37NKqygEsH2lJv/1GdXoltKemiY4VE2bCDyYrfUwDhs3NADSskpW4QA5\nlVAq37s/zh4G9+E/waRkmN7sej7J+Tg6bN+nrGOVFjsYKDrsDcJfR/d/dEs1\n5ld2\r\n=Aovs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBNgGlPO0RHqBVblcPB9vw6yUztHGG51GZaFhDQjzTGVAiAegmWy9Hf4wYilsX2Fj20PkFgBkznP+SlzKtzSlJJuGw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.126_1602405659003_0.059238998955001065"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.126\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.127":{"name":"@leanup/cli","version":"1.1.0-rc.127","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-rc.127","@leanup/cli-core-format":"^1.1.0-rc.127","@leanup/cli-core-lint":"^1.1.0-rc.127","@leanup/cli-core-test":"^1.1.0-rc.127","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.127","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-vhCThzwHG+8raGC6R5VxfKBQOl9eCdeC9vKRmDObH1swLNSHA8UG8+ksy5kGAGYhXagp4j5mumRNzcA+U0+82Q==","shasum":"36b91d5bdad1f63bdf3716a1be2075ef6df11070","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.127.tgz","fileCount":51,"unpackedSize":380589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfg2Y+CRA9TVsSAnZWagAAt0wP/jlTlKmTxaQwkaXQljkD\nEtMMjrmYRyV7wSNH5pyRQE8S4ojycCQypydHlPKcsAgCajgNxIOeYYwejUqa\ncId5zOSFNgYcYx8XIgEUI7B9BRXXzsKFIQEwaK067H4fbzD+03/Ufmu9iZkN\nR0zPhI6MImz10czgZx9a9EtOIXuXg7zxhs4XCg7YRmBaYAjj2uDJtxInNcFJ\najZxbjUy8huQRSadEPum9NKenczyXIkwa9mclybQ/98rtM2fjMDCNSz4M/mZ\ng3BfNlC4q6ptKrUgsrkxpkqjQBOj0sVMCQBn3EDks6S7+JSR8m1rf7O/T+uj\ntU5TIKwnYpqMyHRNXLEg4VjaofeDC7HZFa0uQustZiYr6oXI8vAPzIrsYf3T\nImAyCNb+siYWJzNC0v8QV5JYpU5bBCq14pRCm6ZKcRg8wOUPA4reLRU0a5iO\nJld9NlOoyA9dIyjnzXOAiu1ESEW+xSpJ3qfmDDSRK/buPKMnbYsGMFcE+LeT\ny9XcfFVIu9KogEfAYiNTK3RivZ0uHrEadzbKC7AqlNuVKjg4N3gKgiFMdYF2\n3B/XtgYkhO+OgsdtE25HjTpf7opQDWL4Ha+ttZb2euAlrb+2oCizU3easO9B\nR0D2nMHAEUaPkWxsiG6UwP72sElVCG7Lc1HELWltpFm7Jp8aAIhtLppLni8f\nSrll\r\n=7pxn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtlToIjV3hF8f1T3ps7sB7V3sBhcFoi3GL4owAeWq0BgIhAKn59Fvy+4Vo3Ws2zB0vDt3hhPnsDq2ig8fzImx2vovf"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.127_1602446910174_0.4855521914222609"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.127\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.3":{"name":"@leanup/cli","version":"1.1.0-webpack.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.1.0-webpack.1","@leanup/cli-core-format":"^1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.2","@leanup/cli-core-test":"^1.1.0-webpack.1","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.0.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.3","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-HwuQHAyyKE+29ZPedaCuWHqZvCXuTigqr0Rs43GhCpbw+oa8YVjJCAefCxUawoMUPb7YrLwXoL8PePdiHS2L9g==","shasum":"d96654a67c45d6536ccbbb5e8140dd1384f62198","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.3.tgz","fileCount":51,"unpackedSize":380603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfg2qFCRA9TVsSAnZWagAAePEQAJP0PFBPf8sWPC7XsiJ0\nICQindRfnNo2ljnfBzwZiezhkBbHIxcd96TY+S4cez6KvvcuDhQjcW2UHsDv\nILhHF5cP40jis28ZJqWVIbmpFHLoVXCiywSwN7iiAUHbizm1yH4Zc2xs1gTa\nriF10r7R93hjR+DsJMsC0GZOjX9BrrYDAFtQCSit9FXsUBWWuFp98INwuqFe\nv00X0Alp5XRLsDXAsbCLHs6h/WhBTBMphxTIex1jFRv2upx7OPMDQx2byHim\ndBljKIUOtpgfcs+wNBZWah2FvNijKD67fVxw9rOKkXNAuEeHrCL02OmLgpuE\nxxe5fpF4Z4ycD/DYWYZVGZRVCkHExKjb1IcYel4MYC/u0yGcI7UAsrgh9/fE\n4Zu2NfDn2h/g/AoyUEk6YwdzeDwpjg8yqVRpV0A2tehaDnYxn//ydwNlcQBX\nIv1ovYlGPEAuPaC5IdQQ7G54LXnLDm0agW/NvUOFaS0hGg42LPqauFn9UAuu\nBvZjl97gL+ldLH6M4fLWV92GY6MlsTRiSNfE0JSFP+hZ09tIPUWmDUBrmJP/\nnzG75aWXrmgdsXM4UwcizahPaOdetbq8qAzhvr3ymtGXivznuWyNWBIgox0Y\nihYuREInrAMwPjdGA26J6M9nwzXoysrH27KT3oLo9WLKFKZfpKz5npgF5JpV\ntUbt\r\n=7jhD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICeJtPkPL0r+haBGau03pcNWHZduU8nCB5DrEgTJapG5AiB0qJ48irwsuZf4cu+UbYxaCd+2w1TGE0GGEDtOTOBryw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.3_1602448004933_0.12084051889877578"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.3\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.128":{"name":"@leanup/cli","version":"1.1.0-rc.128","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"~1.1.0-rc.127","@leanup/cli-core-format":"~1.1.0-rc.127","@leanup/cli-core-lint":"~1.1.0-rc.127","@leanup/cli-core-test":"~1.1.0-rc.127","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.128","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-t70USb7u0iQ6g6fLPPZ59AdCQrsA0IMuysoRnk92/6ldf0zL4DSap/8FAvtov0oMLkba0sq8UFDIQD5OkjW8/A==","shasum":"0bc3493a1eae233181b9b2272807b9bffb8c7d3d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.128.tgz","fileCount":51,"unpackedSize":380589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfg28dCRA9TVsSAnZWagAAUhMQAJIbDvLRLemxAE+phJ9/\nlZP9xoqAIQlu/pkr3SPD3F6Cg8u22KUnazkbegbkqNCZCwv84RnLD8dTNQrm\nby7VxNBMgXaXAbtGcCzq1hM8xYegMCbvx6Ac3BCrSi6x0q1mZUyXPtI5q9Ac\n6Fq6F7BELGEYTCMhZtKpNMboIpli0xqS2BBseIqk79z8aVk6vCfICkRcbJIB\nI2xPMUUo1gIqMM8+vRp1kkm5SVtYx0J9ATFYke+IBDyawECxoWuoFVjuK34E\nImjXQji99+JgU03maYmQ4kmnCj8HxW1j7CYnnMj6jbgvdwRvPeF544B9BAlu\nCt+R8Rmd7JqVM3KQY5xU3+o1oHEeU2WzY4F5wyGbZJfJ6niD0kD3J/fUInIa\nnydg3V4h7pXsMfg3pXz0B0umqX9G+8El1FWw3dP1ZC+HNOHInF5qNCvZ6Qrm\nja88bE6eHIl7G/sDQHt3gxWMiEhd7ix6h5JsjFkYUwb6IwDUx/OG2QI1B+F3\nAs2Ss8aPAM0n52G+ohYN8MwqO8bG2ZWkcl84fZNyxqIZCjjDgrYtUFYHkS/Y\n6eGY/O97QhAWqCSSQT3BQUH1xLF7zYcZHevP1pVrdlAFUIFdF/AH2qLEKuoh\nEHxlH3vaV0t3EdH8wVjb6pkw59DuDk2qvGPVpF3LqRTClwXtZMrqCSSm2dUv\nL3Bq\r\n=eZxO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDM36kZaoFJxeV57KhCZxV4L0w4yPTJkLbCT04FDDkLqgIhAIA2JLrPjd1MDoIZs9SEZXQzarPXLrQjAfRPmL1e1FvV"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.128_1602449181191_0.777680963756904"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.128\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.4":{"name":"@leanup/cli","version":"1.1.0-webpack.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"~1.1.0-webpack.1","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"~1.1.0-webpack.2","@leanup/cli-core-test":"~1.1.0-webpack.1","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.0.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.4","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OKG3JWUFxHVqy47RfuRLR6Jr0ZbOq5NwhvEfM0ziOL2tvbEsw4qoOYC4xoLUwfGJwO5QIdFDGtZarnDTumqtlA==","shasum":"5d0faa72662c961a1313a366481bf86dd0e20b4b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.4.tgz","fileCount":51,"unpackedSize":380603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfg29qCRA9TVsSAnZWagAAkgEP/AkNb465EV6bG4a8NPs8\n9+lSgvgSxvGeSpAWaoqzzhTVs2CJtTHPbQNUaK5h+7AyQdTs64dHykMvD4ZP\n1KyiGe7ySg8dYzzf4E2yIs83E6YENUCX7iy7bGcSU74U+Bql6oaQ3fosnR5S\nEW7sDAwSTIFKEenI3NPEKtfDqIDWKLBxSU/UsSWZMhZlXj9TrmgK7LWGgvd7\nOSaxjZmTiw7Wj7hZgtposG9VNxGo54Nqn0mFPoPq7GDSy0EZUvrsAd7rdsW3\n8ye/EtT7Of2pxwFI/RBvwxfwqoaC1T+PoyzdYCPGiBHF55oBH4s2EQn+QaTE\nkKmVulfdNlynx1iIOTeUnBcCDq54M8F8gIwlhm6xgCewNYHBFVBUZ399gNXQ\nhNxFsUrgiKRwWCpRVA8vkjaLlDJn6U9xKn+ojWkJNGC7qj8uI7fXWNIHCCLH\nynb2uM9cqBvJyimrBbsjHY/QKrfCLhjpeCKoZmrU0yoZKHSUubeGXPjt23Cv\naZ0OZREHgrRW61un7/VPRnObw56AkrU7c6wS2e5BoOkRN1Zxum5Q4IaYn6+z\npqw4X070oDtcWONTySCgfNbPjYEsTahS8cf8P8KCbkaEQhYWYLtwA0KN8Yxx\nwZ8Si+30RAi7Qft9OYBCG8H2cThCC+Ocy/mZL2TSS182hROlXognhdRN3jzK\nzuVS\r\n=4El8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdyxGZZryeM/KBv3b/3tc2BI08209bRZJfr7cvsL/13QIhALWtoU/agWqhynJ/yAVqm2t97lwiGUATdplpFeAeD6hi"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.4_1602449257866_0.6888812977769598"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.4\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.129":{"name":"@leanup/cli","version":"1.1.0-rc.129","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"~1.1.0-rc.127","@leanup/cli-core-format":"~1.1.0-rc.127","@leanup/cli-core-lint":"^1.1.0-rc.129","@leanup/cli-core-test":"~1.1.0-rc.127","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.129","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xXNq+sA5ByagqzhevheCTRldMFk0ox4mxYKGt+bwy2QvZQGl2A/YksYSUD96wyOfRVpNJRv5NwbpMTg04N79aw==","shasum":"214f41bb63eed041a9efe998b42c5edeb6f82c14","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.129.tgz","fileCount":51,"unpackedSize":380589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhSpmCRA9TVsSAnZWagAAs6YP/jFCZW8B36nvSjcdlzkH\nVGNFEwIHOpm/N2Zy40OVoX7xIqaGqsIi8o39L0b9WPDS1DA0bKXe6HYcvYrb\nq2aUoZHazKz5cSdp5tuyk5lGx635zBGJvphTEpKwNFn1v88uXOGJYISgu6pe\naq5LEbxBLrhsQ3TZar8vaXUbaK2snRix94rjy8aqt14gXhT4f3wxMS4RYLW0\nQThHfyaRn/SnrVKBsALnJCFACQnimuB1doP12GRlptHjdnREABWHIMdjiCvX\n+bKRsdKzAb7QHzALQhF81apxQrIxnmWjIXrmA5x5K+xwGp4Kgr3XadS0EsxB\nJ3MOikkMhwH1Nj9u8s3NOMb2G1qZc/lCJug3fxSO+2YNP6XKIvtrtm2ycTxc\n9e0lGIbsuQeEQNqEWpN1jU3JxuhiI4ZLX9AchKWsUR6ugIewsOs5QQnQlhzG\nRtjeae/lpubbr5YyXUMhZJa38AIqWzjJJbhqvrYj9990qk3x49G6J0oG12/d\nd2MWLGmUNrz53y2E5mExGD6Sllo0d1heMDp3Y/ZGV0uswSk0cXfaN47qgP9B\nMHJadAq43FSuZ5wxh5uHG9bq4KOT5XyBlV8mqxS6SXpdmrdz/TeuEChgCTI1\n72Jmg3J/65agHvsmbkQiJMTBoyUlo678xzD7Ty3j/nl/SZAOt9z/HgjcGhPO\nY9Ku\r\n=gkjF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCD3qpBOjHvpt3BYe1tERszOjEQ2SNRCczvhhGxOu1HcQIgO1AGw8V0vbeP/a2ZJhoPAXQoy5gQLkhl3llkJNsoz/Q="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.129_1602562661804_0.7887754288194215"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.129\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.5":{"name":"@leanup/cli","version":"1.1.0-webpack.5","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"~1.1.0-webpack.1","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.5","@leanup/cli-core-test":"~1.1.0-webpack.1","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.1.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.5","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yVw/Yj3OHLPCsVl+kw0br0XEy/mo7BH+GGludShXr3bOxLuZMxn58JKQv9qXq033AHJ3s78mFXXlo/KBbMfgMQ==","shasum":"6c5239ca496459360417636b01c42d81bc223386","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.5.tgz","fileCount":51,"unpackedSize":380603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhdYLCRA9TVsSAnZWagAApwAQAJbQiN1AvN6A7YZqaFK8\n2zc+xYLhDxWUgq9c8+BgNxGLaY9JioHXIyRk2LACqZXmiwbNSWckHsMYPt/A\nULA391+x8VFrFJI4nEenaLZe6UY3XAIk/7RA0uoRREOyim0M+5oy99lVBTtq\nRlTX1kkLsLivYuvQWbL7eY8p3uKzxitDrijbiQ406u3Vlxsr3UP4A5KrycmO\n7Xn6cJ3TL69P/1yMYzMLiLz3c6Ndh1YfAL0q8xKloUs7BiXtKIUNkKDxl6gi\nrTzgeCYOvgcauVSv1ngi9PFU651Aztp0EhbR/kLhkUWjciQFf9ppgxzWVO+L\nH8zJ8OEChJPX+nBVx9clCEc0FGLDMNKaVTGcElJLwez4btyfDy0I4v+TlLrn\n9+iP6VnR/h6/6FYB7aEW2rEqCcGDv3gPKUIv0+bw8q9/9V9nAHBallVfBqj6\nhaYrec9pn6dQ+49CqZMjLm/DAdU5yiATOsrKSXPZZmKmiICJkqSnA+W3jKHt\n8En9z9OMLxQfJTyPncc5u32iGgxG/jtikzlH2tpdX4e0RjkwT3YOJD/S5Bft\njR8xbIUwZe9Npf1L0ZUDx0XhsEOiWrPaPBMfR1aQrHSIf/Nn8H0cd9FjKQmH\n7d8QpuL6C3Wc46PTssqPvO2QeZZWAPz8ZXYdGQXgAqFt/EMpJNHUCP3KhzIq\nP7HA\r\n=LEYC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFmGNRG4pkxILEjdBUT2jkQwlUpjJfUoJeysmpCn5dobAiEArRaFUwkAqcu/K7L9ocy8ZBhj5QyPBnTBU1wTn7SXkG8="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.5_1602606602609_0.9675147076475901"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.5\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.6":{"name":"@leanup/cli","version":"1.1.0-webpack.6","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"~1.1.0-webpack.1","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"~1.1.0-webpack.5","@leanup/cli-core-test":"~1.1.0-webpack.1","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.1.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.6","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-ulm5wmv782TcB7bj1R/mvBWtRVphLk8vLLafKmodtLXUNxsfbr1CJ+jQtflybaxC1O7vlJfMgq35x16TRoCmDg==","shasum":"4c6ef8e2c5d70a083d319ab202329e6cb8f2977a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.6.tgz","fileCount":51,"unpackedSize":380603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhfCOCRA9TVsSAnZWagAAJhkP/1RqwQqLSj+U9cGiF0pJ\n4Hy+GuOl93UejBG9ULQxm4vfgwzM/KuHuAGu931o0D2f2PPbXJ3rbcA7nwRv\nxIWCQWIko94qlecTmRFLbKM7fe1Ch1rxzFaE2H4wypI27QEUP066i6xvRY5g\ne0gTT8gLPJzUoSvJpV2QRz8YmM/Lc2sj5F8DLJxLQ6l5344m6KGZzgMuLLFF\n632mYo0+64foK6TY9kRyMc6oHug2fbR/w4MZNOUU458VnA1PEsQB6MJXpoAs\ncuWc5Xbo+UW/ReFwYVtnP2qyo/tj5vF+OqITTLr4wXkIvYw/iLSbZRYS/EGj\nEE23cGOIJkxdLcXryhi+p6q55VhIVSCLLnUS/rrdamLdlG6S20Z2D4+QNx/6\n+FYP0UCj6g6nyjVtgFd2dDFS3jugtDhzY7nZ5lQNCfxoA8mP4sLzyQWv3Onb\nR7GqoKSQPW8c0hI0ojPkIfFOtwz1IWCiV06STQiyXADe/2sYeJYM0zt/amPv\nMZaBElf3M70H9Bk3lfFjkMb8QIAzxKNxDpNIsW8ubX/pV1K7sBZLtLwQtN0u\nxKV+hWGKamDbShWutgLExXeuXLpq3EroIUK+Ie8wbj5acXbDv6pmC9DnI6/n\n8i9AcyoXaQo/vy8Znkjp4U1TzTqCKs81O4kqOiTVZW+nVwJppXEjqo3eKE0k\n2hfr\r\n=MUB8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEYRgODOxxB8mZSdNvplfyxUBubf78CxoWdF5N1ab/k9AiBXj0S27MAkrcVBMAqFXxcRyn4nJxLwbfq44mCGm2vSkg=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.6_1602613389572_0.24305186691153535"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.6\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.30":{"name":"@leanup/cli","version":"1.0.30","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"^1.0.28","@leanup/cli-core-format":"^1.0.28","@leanup/cli-core-lint":"^1.0.30","@leanup/cli-core-test":"^1.0.28","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.30","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-G2oBJzTx9xIptzQeaY1kRvGJxLA4vHAQyN5B325e8Fqp9icEBm6KCAyojfjTX/ju47ArFrLUuyEmj+H87ce1hA==","shasum":"bdd5f95a10d6f29bf79de42efadf2d107a43dd0a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.30.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfh0XACRA9TVsSAnZWagAADIsP/2ZJFERAgRU4tQ5PTlcH\nCJtH9nnrj5Msi+BaUCIaM+lkmM5jSzHI0B3yqBoSuIGXhXGgoqfDkqIsnbt3\nHr+hK4pVP0XiO7fG6H+gzhy9nuiju68gtai6mLYTg4HM7BzTdTu47MwHlWfQ\nUL+ETB7oneO6BbO+qNMpuJWs5KSpt3p/dWxYl2F6cha84ChihACVPaOIM3/L\nna0FI5132lb8ldY/PxaIqtVp4LdkVyszlbOn5jxRIYsXHWgt4NMCH66PwOBZ\nYfbETrcnHBgIrcvUFDkjq8PhFbrgF/QPgC+vOtp5WqnsRsWyeIobtJBdIV5z\nBdOJD29qPDTxyoyIDRvCp0cHC3e0wzEkHDlW56gZ5gL5c+LdNOq90NzgBN9G\ncudKbVb1+6HgtP5z/mWjOjCs4JMeXVS+Cl4w52biCUBNHPFQawJg0yj4Gyr7\nTTG5a1/QD0BfJtWCLpkOqzv0GydKf8k8wZIam4IgvU18baBZGNM8aO5y7lcn\nWR2az8t3J3SxMRI8jd5Nh+lMUtShAulGNT+8mIadcELhb1vLy9fUGyLvS/Fg\nRGXv1P/rCWN82qndzsiQIS2hna4qWvAmY/ioKOpiXl9KwFKq/5Z8YOypoloc\ng9LXhAp7ggpjBpCiXGnxRil9+UZrpjBQA2EM8MbzsTVRTdR7vF79rY4seIrx\nkEce\r\n=EluX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAuGB0Sj+5jX3byMdFlCLLrzwU7tzdWY0S6TY5YfOJHfAiEAlNlBVJcd/0jvp4vsiBjYBDLPaMJa5b6EeSWrQdQ+6HY="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.30_1602700736043_0.9702872153846358"},"_hasShrinkwrap":false},"1.1.0-rc.130":{"name":"@leanup/cli","version":"1.1.0-rc.130","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-decorators":"^7.10.5","@babel/plugin-proposal-optional-chaining":"^7.11.0","@babel/preset-env":"^7.11.5","@babel/preset-typescript":"^7.10.4","@leanup/cli-core-e2e":"~1.1.0-rc.127","@leanup/cli-core-format":"~1.1.0-rc.127","@leanup/cli-core-lint":"^1.1.0-webpack.5","@leanup/cli-core-test":"~1.1.0-rc.127","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^4.0.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.130","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-O6Rzg1LtDzYEs3InWZMIzxYrl6Z1JwsCbOXgYPNW0fBCSpgvrzRnFHwJmthX8C6gxEEGd75tm397EoznlnqMYg==","shasum":"08899580e2dfa3c985a154828d1c1260f6ca367e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.130.tgz","fileCount":51,"unpackedSize":380591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfh0ZYCRA9TVsSAnZWagAAHlkQAJc7mdIohvjuM0rbhCLX\n7fK5dxNQoP2yZLMDvXJS4wj84xjvMTOcFOvGxDp0LRqSPaQFOtLQnkaWwoiB\nKuHKZXN6PRCxgMkCrczI3YukE9uGd+9N0/r4Z2nfY+BJZazcZR++aL6cOfSb\npZ4soXWd64IHdxO4NlwiqhaDoj80SpMHODKmYgVjsWTpNr+OxAfiiG1oZSJa\nQpxDZxtM3+wJpCC/kO18TwQix1Ui4PKE0oZaLdGuz2R84hjNT4qSQ415rVCV\ncBpkuf8v4ensxax7CaTguCeWgFE/+9KKkZkBLmUPsDeWE9j9oObfSfXlcwB6\nO+EczDkksbkLapEtIavjsUWzPsUMIdynif0MXqqrSaUHWC1wmMsfObJfBi50\n5E/TrKSh5IItjkf2yCzoOFjk6T8asWSwZFQBweoPu5zpg/CaYOCQckqmWBjf\nLXlJmPAwJCPEALzgV7bTtYigUfgulkrUWAt5RjWPmnaPyf1vQDcVbcSPFTe8\n2PzTa/bXFVkP+u8tfOTZqwo2GUBeRZ6wHNF1O+ZWJHzC2CyrN4Wp/jdxLRMt\n3scIxvO1duCL9eNBl4mXsqJQlLVq5AgQ4hgrUWT/7kbACWsRvQZxty1w6HS+\nwQFmtMWx+59m7JA2HuaO4LmGXw0BxvG+MJh66kib/Mc6AF/5LM9QQjUEyCrD\nh+Q/\r\n=eKp2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpNJiM+ZQxCNCK9VpS8Vpz94KyQrM2nQDg+V1jhqUpjAIhANiArHwBSa7JhAP4Ig3vjVpvZ2H4WF2sN5SI0FkXDbl6"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.130_1602700887957_0.5165451523358964"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.130\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.131":{"name":"@leanup/cli","version":"1.1.0-rc.131","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.1","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"~1.1.0-rc.127","@leanup/cli-core-format":"~1.1.0-rc.127","@leanup/cli-core-lint":"^1.1.0-webpack.5","@leanup/cli-core-test":"^1.1.0-rc.131","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^4.0.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.131","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-raDxTUz5en3xj7XVL0hC5zRBso71FRo75FfgNNbpZ5bAg4lsxF65STPK8cs9YOzcGArMHdLTEtSH1AI8RcGMkw==","shasum":"47b0331433ee96daf8149d3525527bc870cbf602","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.131.tgz","fileCount":51,"unpackedSize":380591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiTNvCRA9TVsSAnZWagAA6IcP+QBhorrO1i/EaAb3pRaf\n+GBChgev/3AdR894DkfCmlPdo0/9O1TFof6AGgCrAT7OdQQ5iwUY6Zz15gLY\n/oAXvmmqISzwnJvUGMG7Bt9CXbTcpWznlrG8CnDCwuoDTlr8lgh5qRGQt6Ks\nBecN1nf6t+BkcKcTa2dYDpWVLVjkb9NQNYaNInPqTUwCT+G9qCIX4RgDHfoD\nbafo7gDMuUBAWm+59CJmWXX3gBvmO9GWcE43lMn5h8OJTR7tqjjqBMV/YxMQ\nBOVSNmgE1+NVM6TfHzdm8aKiM2itGx9l5edyoPFOICmPE1IYRmu30R13K6om\nwCUr09VQ5e5EoGh/oKVX32W5lHNwstxpAS2ZY68+28UgwV7ZqtiCPPrLx0TI\nV0xsPZh/0UXp186600xVClGZbniVZ3k3s2Y6vTfX7YKbn5MGG2xaXVkAIbDi\n4bvTtMICwbdVjPSsnHLX7q4cp/lHtuBco8INnU3wyCaoOOBi5a7V6265w+b2\ntEjAt5aLBONq6fV7oKLoKrj27rUgtIjadXvnwFrraG1yXoQG5osMcXS7BRaa\n7Qn1t84yGqr8Pvob84BNpZ4CyAKKwmWm1rrSAjbluhAHACXNvsZMo6GQp9Ck\nP8pbOGzEOPsQG+1ONN7cxh1RmPbPIwrn13oB9j0Np+acT1ydSymgd5gzuci8\nkFkF\r\n=vdMd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIHvJb7H5o61weHmZvB5utdHvG2mo+iFYI1Mat4G51EwIgIzHE0wfsdJpyTJI5vxK7Zea3k7PWwAKH8ziYN80IALM="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.131_1602827119420_0.7070037075380844"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.131\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.31":{"name":"@leanup/cli","version":"1.0.31","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.1","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.28","@leanup/cli-core-format":"^1.0.28","@leanup/cli-core-lint":"^1.0.30","@leanup/cli-core-test":"^1.0.31","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.31","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+TyfoUHHWuC6/ApOAn5trZTNRVPwSYwVRmbzlX8bJpwDcLNl9ixoMqSKcE0YmZyU1mb6ES7hefBowIzDS770ow==","shasum":"6c16d382d7842b890e4470710d1fcd6dda364180","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.31.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiWSACRA9TVsSAnZWagAASp0QAJA3TzW42878dhXcJ9Uz\nZefAlNuYOvy1D2dVLPVMoQt+dqdNmsgpquPB0Bv0xucaDbxPYZV4HY8ktSZi\nkTeyQ5QInbj+S+rogX//pCA9ZIZf8NKr9S/4RU1A0KPYTST4PtLfdEk5rC/X\nEAeMeTGxEOIfnXJTAIQeIfJzNiDTgTEgTl1cJrva+LuIBAIimp/LTW3CDBku\nEDPlDsTWsSAG1yFHTvOf2s7HPSfE418jVdJze3keLM0rVOKfWQgboAi3c12t\nP+emSu/odqYPRFAqIS+xL7waGJs8s650UG4XlYoHt6uAjaCiH8FY3sEu9wD6\n+YrUVTXFa67xMIcxz48wlDTWUhuepKw0mKLzfPDr932C3NHySyF8/Gy8wFbc\n59k2GJ74UElZ0seh3MSPXpD72cY3EN+fsCE3blfxDhtGhquitqhLYg6MvLql\n8kUNaZZVOZJuXl4WtDdMWJkWUWcmGWHIYP25NcvgfEaKgSqK8yAg5B6aFU47\nXGDb3iMDm9cbBtbkJuKQ2QF72wn8cUQsKcqztjqzrXJDNzjbT+uD3CR9NnH3\ngmNDaRow4lTQKq5c11e1s4ylYgzONWmnvVizjbQEP5H/51n/qTPgGMoEHavk\nDbVnYWJyTlpabzhvX1OrW4Sd9UbqAMuwloceI1+aF9Pi5AWQJD720Ogi9Sgm\nGeh7\r\n=XIV/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFJEbgAVOkMvL0W4PhJidNYayMuYUUpPkgI7TGG6hr1vAiEA4jxQQ+fwsCriHqggfjAaoQFN+L710843pEbZhSyCwCc="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.31_1602839680254_0.7825953532248009"},"_hasShrinkwrap":false},"1.1.0-webpack.7":{"name":"@leanup/cli","version":"1.1.0-webpack.7","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.1","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"~1.1.0-webpack.1","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"~1.1.0-webpack.5","@leanup/cli-core-test":"^1.1.0-webpack.7","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.1.2","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.8","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.7","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-U4NWtxIrU2HCAEqQTBr3NbMYhl1MP3lQrXd0QdHvUwAsOkjUAXCmZA4vUSCr6YUYMCQsSZ7PTlIKbX4klqQzVg==","shasum":"7f9dcb34501e41db5d83db7c288063325e302802","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.7.tgz","fileCount":51,"unpackedSize":380603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiWSKCRA9TVsSAnZWagAAo4gP/ApxsNai6Kd1MxTQ7AOj\nr6+PVAjHsDGkkpkTxVHKvF3RyvVpgISkvA9snm8GLKCaEE69rmo0bOvQiOCz\nVBHQjOcjq/c8rjwdBSLBIpWqccpOzIXj3z3GAH2XAf6BkBmu40dOdzDssII4\n5IK8n16VgpTgpwwzRMrwAt0m117p0b3kLluLyFsHyNuXqnQTY66h3GeGYI9o\nhXmqC71R4KScB7GbzmE09UK2sA/2gyFx3nbQVlSEsm0CJREM1FATx22oqQqw\nBMreOSRvTHE+IYHXhTWU6WsPWvt8QIDv0cvZZfOEsMo3ywn6lDPRqiX4sN2k\nBMfSvqCf8GDr5yMUSGflsFf0XIAe8wESj4gbRQ6EBzbSulcOZDDyX10OFhet\nEi+vd0tfi5M6NA04uryxETIcUO9kp/K4VUd/4awEHq5MFu6DiODXgkIJcjLM\nWYhyN3I3i15LUbzJVa0WI/a4qpWGo8g2N3r6BeDI9KLrWDX0sfapFmMOc/4g\nOajqJqK/WG/faxp33T2pO4PG4QSWR3gU42d9wiRhFwk4gtFwpCM7ruqtBnYy\naoI/Su5V987twCyFA9TVfwWJukp3UKykFDQr2yS8OJa8GTGgxQw/f6J8wC8U\nFpJDJ89/wXDhVrVmHwFA9B6xN2fvUzQfbPBCPwGgsRUPqA5z7aHjZZmBK51s\nTdIb\r\n=a0+b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWUfpLyap4dpONbxideMJAaZrXJKMOFgbL4osT+VbD8QIhAOFM54fAl5RBWcOCI/47Oce2EE9smXHhVWSEJ+eMB6w/"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.7_1602839689832_0.9339374685872444"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.7\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.132":{"name":"@leanup/cli","version":"1.1.0-rc.132","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"~1.1.0-rc.127","@leanup/cli-core-format":"~1.1.0-rc.127","@leanup/cli-core-lint":"^1.1.0-webpack.5","@leanup/cli-core-test":"^1.1.0-webpack.7","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^4.0.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.10","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.132","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XhEEFahnZB+jKFjUy1JM594UyaDZQgtm5cIZSCp76E/eNzAQNrOhWYxpGA/zekMK7TW+j3TdYTsEsxyiS2eoBg==","shasum":"57db7d40471236883db582ff134111afd5de0cda","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.132.tgz","fileCount":51,"unpackedSize":380595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiuXNCRA9TVsSAnZWagAAMKoP/3jkPgxWJfWLrlGiG5RQ\nzdUvIpY3MMY91yw3QT40cM6y2wYtNMToaZHwMysz7/D1zmCXvV7AhcjLb2L0\nBy3xTZaIPSELBP1gMXTsqo3THn9bcXiRMvELNinLrjT84D0+yAKWDI6IlBrh\nrM8QYyrLwnExd1ZQyIOAk75s0oWCHtU32XNrvu43lptupzllsQ/0heKajQVY\nx68YCHfggtMc1eg3nAw0RuSDiwbtKCqMe0Em0a/Va2TK0y0Hm2iWyoqiyznV\nRpKe+2k+QqADXPtaCSNqAddz3UaQceE9vtSbJ3sSa3Niacs9tRckfpxT1FJG\nPQLN2Ju8fVQv2zLviTvsou5/jWzG1NiTP+tmPW+3wW+/cnuQrrDVwfKSrHSv\nfC9ozwvZzr1xqj6WDIuV1zb6OH7qSq0QVKDg82iqy8krFu4q2UHDES2bZcbk\nxL1MtX5b/NXQ1ftApjI/Q9HPuwLXxDku23ZXbn+UmsrW+ynaCbS9ZXZYysBl\nLPNiWcHZoJt3nEyaV7zU0ZgDQjboxFZy0WUdmo2xJF23iNTqhxQhlbgId0V1\nOqMYLqolECE+S2xfmX5k2l6hxf/WjenwkL/+4x9m7UvdjM6vgTPMq1kHiOpi\nMRTIg9l/1bWPlY7SWWWRqFXSMAd6UVbYNAda6fG9Otao8bLecWCAKPSSQ9xj\n6J+W\r\n=P9As\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBwlej47pU4gwK8KwyS1DARMAyb4/IzYLYcphb7RSBfsAiAP0VbdGmBVWrRbwISaV5ypIVHF/lWuZdzkorOzG1tNhA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.132_1602938317432_0.6552298266814915"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.132\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.8":{"name":"@leanup/cli","version":"1.1.0-webpack.8","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"~1.1.0-webpack.1","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"~1.1.0-webpack.5","@leanup/cli-core-test":"^1.1.0-webpack.8","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.1","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.1.3","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.11.10","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.8","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eUioVzhnr5CpN1iNul7nvV2Nu1lS2Z+z2ALOcQKSMGRpP94E1cwxFLYgXbKxhQcPLGrgtHZsXQnpnsGXCEPgyg==","shasum":"81426ef57e5b1c4b03eacd87137cb178b41f993b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.8.tgz","fileCount":51,"unpackedSize":380604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiv63CRA9TVsSAnZWagAA+c0P/24HofeD81IdsdWO+T7K\nTVWYL5ggcGakDiGd3tUOdb+RDVE5AMsNSXBz5pCNXCAe0ruJNRok7gcVGZ6u\nbEOhdEerglENCITUP6mi5QgeJZ5dB5c5fdB3a1lF9s309gMlHmb9T0FA4R4T\n4QdhNpQkdODgOLe6Y0LS+Izb4EYVbzian1y75QWqbINpky928liZTrJFZ0vt\nIcmRj8rQ5P6i/D+sZXN40/4OS3QnWIaUssdwUbm+yjgvXo0dUpqtYoX7ygFh\nGs664t9+JHOKCzbYM5UIcZpaUa79nYw1zgWfasHHetVce3PlWzdrCJq4x32R\nz+IYbCvFmnAXKr4Hp1Bto/UkZJk9h92za1KcVYeS6wQJ4fiUwKAMoB1uGrkA\nQzEj8mbdGnyu0o5Ca/SXWk9xDrZI/ih3/RFOQZQaVHeQ1ZNssRg3VNTM63p9\nuUZN3vSnlwDC0RWQ2HUvpHoMVavPH9ftGyMqClk4oE2BYyfshM8cSuZ1orry\njiOkYcGTJg5Pc9D1//L24LPNlwMPUHoBlaz3XI62/Wrg2B4kW6QunjL+vUOd\nzQfK3ATQ01lJAm5+RJApSxEOFAOt97OXWu5y5xyh7ARiBUtgd9PVZLetNPug\n/ThUgH2wCRKAVd8TKtedrBN3PQvbFbq+vg+zZ1l2CJ4KFO21kh8frE3rTp9Y\nijFv\r\n=RFpr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGRaSpeLtn5p77QM/H+M5/ZPVG4LAno2xgrHX1dC1UUTAiEAn9I1Qa8RbLAoVEnkksKiMyNqCugoNGQmgEatAUrkmlw="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.8_1602944694707_0.4604660596099457"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.8\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.32":{"name":"@leanup/cli","version":"1.0.32","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.28","@leanup/cli-core-format":"^1.0.28","@leanup/cli-core-lint":"^1.0.30","@leanup/cli-core-test":"^1.0.32","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.27.0","sass-loader":"^10.0.3","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.11.10","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.32","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-4LUaYyA+zZHBnWz4BxqSkFDNyKyXGUHdoecSm/4aDPCZ5lzvw5kX/37rEZKgprKAt+UXEUwj2k5z5h4iZ3dofg==","shasum":"8e2f7ad01547a092fce79a10c07fe654d8ac4386","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.32.tgz","fileCount":51,"unpackedSize":379939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiv7YCRA9TVsSAnZWagAA9OsP/RpJKG+IRkSkpTyXbocM\nP3WNsep9JPsZBBQGR8CtzQmKUh0YK+F6+aq0qMIzkmz9TomkHID4Exm7zeRd\nInaTJNwJ89xhCCRY/xtAr45kVrpYr7mOJ+BmusOqQZEqMQOZOekjNu9FWTso\n7J6TIkp3nU7smKmuGnw5xtIc30jlL/5GPzoy4YBXHyC8x3aQFvDcJlPeuX34\nd2Sim32Nio18XSOx1wCyMEibMvsB4W8sk2+VzAW1GoqUtT8DiD33AtLrx4oo\n9iAFfB19ML53Xve6PQCwhBj6j2BwULWQRlujJ4v70dltG96zxkECSUiCWlvL\nBIxyFCXnVZa7KKjXXlRlbai6+xyEX5C9oVw4W8kWg4qhEPvbbMkQJhUrxVTj\ntFmZLkU3Q4dLfvEX+VKZPBlLnNe+7hGOCSihOxrUZ123WlpuHFk5De0zE58W\nZGNdZRsm8ZItlBoxXs8BBbbVBe74y+7kYZOz3NnQ3P2RValcRGNxmnjDI5NJ\nSBwgfYv/8NzGWZDbX3o3Odk4g3nXWQ6qxUVb/ryklqON6Gv5oVfJEtpGzJWP\nSgr3t3+gTQrRx8Dy4wvJ6yUWh7717KcGTLAm/l5zrQXs30CHmEjn2Kzbjwh6\nOFYjKLhLw4bzcmNH9ocxgNsk6rDLdIxBxe1a2JfNL2c5gNEG3yOxgBHOawyA\nVp8P\r\n=J2V+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIADl8T06Jlg/63u/2f1EBNVbvadOSOUCwHT6SpAfpunhAiEAzmZEd0q2NIDcBFp4EZe4hpc7u8DxO9/t3hMrkz/+eIE="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.32_1602944728299_0.38434966526419445"},"_hasShrinkwrap":false},"1.0.33":{"name":"@leanup/cli","version":"1.0.33","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.33","@leanup/cli-core-format":"^1.0.28","@leanup/cli-core-lint":"^1.0.33","@leanup/cli-core-test":"^1.0.32","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.27.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.33","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ahuPUJuwTeWH2KpKawlUb5/ThDsiQaL4lcmkNCEZJZiFSFshjkqaN1jhTV/K/QaimTn6ZJ+TeRdF0h59827fZA==","shasum":"dff719f3fadd3c1fba1009f96ae5676b324b9300","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.33.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkkLeCRA9TVsSAnZWagAA7aEP/3eQx3BkNF67bWA8s3z4\nkMXHTLpbRXhwIfrqG77ChVvUbltYCNLRT1IlybxP+2wo9ss3OWhTRfuPr/BA\nVol8bykOpOETRJaceZE7WWmqEAXO6yoVWMLUqSbUUaEixxxHYt8vZKpR4k9M\ndQcJZWo0B+ogHkEZvDvUqXqramEsIZUpsSOcL361Pe8t7/7m1gzbsFAVbjdN\nro96Lv5/+sIRPLtPCp2wm+epXX+WBahJn2N9Wuq3fMPBkoe7uDz9yK7k6Xms\n6g4FaCCK3ar/xrlvPKJg7tW5PaeMNtVjRfUmOS9W/mqfGeh8830DN04lZG5d\nTmCCCaYbTOF6JTiRw088gbH+P99yTPb6j6CIX2dB22KLSaTXhoTG9Yl2+uYp\nNSlQ/JK73SuHhO4A9HvrNl0djf6hpi4ypFMbsXRcbdfYP6ZBrWoKYCd/nbPS\nAdd3whcu0uGHqpf+wSKzWUjWsaJHUiz7Kr06eZpm2yKnulWz02K1UaGQqku0\nTOp2Ax4faeJQEpQKOvHWWjgU80Z2u+WUpHoJZ6MKiekPyS63MLJUpstiA0tL\nSzy5HCMYseAd4hznkyMgLtqmvWNBnyHPIAae1bSu0+pWmBxbZgOP79mwtW4z\noe5xNQcUoTux8z2EmqzvT0EWDABldKmSMTyh7Sdfr06CTCKiKhWGLFcdKHp4\nsMjN\r\n=77XX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCI83dkcRRuPLjaYP9DE+LBspTLV27YuHjMtiIL/iAmogIhAPEKKItAjsaibH4drJ7z9YpkxgqbY10QxnOuyHwlF7lT"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.33_1603420892933_0.25510797456526046"},"_hasShrinkwrap":false},"1.1.0-rc.133":{"name":"@leanup/cli","version":"1.1.0-rc.133","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.133","@leanup/cli-core-format":"~1.1.0-rc.127","@leanup/cli-core-lint":"^1.1.0-webpack.5","@leanup/cli-core-test":"^1.1.0-webpack.8","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.3","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^4.0.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.14.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.133","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bXxfU/UkdGrsqw7QTEozPDkxfKYniVh/QQw4+hIUPFm5HWpz6TF20DwTN4L40rJK2K9WCVbQ+SgnZSL0DOdxOA==","shasum":"b0cb1c15fab205be71d413508f8daa98c906843a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.133.tgz","fileCount":51,"unpackedSize":380594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkkSLCRA9TVsSAnZWagAA6wEQAITUfHQrPd8L4ipKcyjn\n5V38WnXgvRnWRKhRZZmfS4NyD5RZ3BtvM1HcIJSPNxh5779wQKlA6r/mLUhd\nbK+SU1f0gw4vFTgW8cgb9NhzRNYlYsS1LbGQHxwNxzq/AUHAxEl+4E4YTc/z\nF/QehcsJKq0S6Fv71Uwm0VhJiVtmw2nuCVcSNp8ZQENwlSpwKVJNGK4YFj6u\n03dFlHmFwE7gZ0G3j2AKwY3ymrlRjIdLfphVDdy5GtQIOkBcVzSJVFq3S79d\ns+y0fmNKPEDDFpqSYFu7vN07E+UeDPHhPzHlYmG0sGmF8C+mDKkJHu9wabbq\nNQL0O8RmPQbCr0DSH6wuEqj1YY5NxveJYHrgzragNQIgK6iLsPtvYpv4ZDer\nDdCetCbWeXgUSgJZQqZkqPiwnZpog+8OFBwytxhemZGyLxaOfAZMuuzlwXaH\n9Ur04+7mTaONk3PbUSx2Fez2Q3AyW7soYOCTgzuRQlIqzavyJLJZSPNxY/0l\nW+xAb+JbmQP9h8uG+0sawoidlNeHY3YdxpK94+TQ1ku70eD0Py42NgR31Q/q\noG0AWXg7aCs3C2dsK1ROuj3KsBKX5txJfSAuoe8IphYEIeIKZW1owBPNhZp0\nR2uH+4vte0dInmLzF5+JFnB1hGDMT84TUlMPOhNKiLydRMcj+5byqi8jDWEx\nf3zr\r\n=/Gfz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHs6+ofd9ceCFocGlfh6Y+Ztpcm8n4BKfKUWax2P2K08AiEAs0oLwxKDgRZo5vFRIFOWf6LGH/jisfptF4pMOiLVtJw="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.133_1603421323263_0.9356607652990658"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.133\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.9":{"name":"@leanup/cli","version":"1.1.0-webpack.9","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.9","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.9","@leanup/cli-core-test":"^1.1.0-webpack.8","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.3","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.2.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.14.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.9","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vXdG8vnPhSYv8Vqr9m28k70zKZVNdtQMUgu1JPa/QKNl8kbzINWWvwxRKgWCBO2oM3iQUpQbs1YinJq9gCVLOA==","shasum":"e7ee2731e3f76d6d29f43ec4d05426e350b98e8a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.9.tgz","fileCount":51,"unpackedSize":380603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkkaACRA9TVsSAnZWagAAETwP/0IALT926Bp+/tvlKL1/\nG4HwQ9OBRRGvqkG1g1rfhyzZVKIB4wJkSz/fVKkmB4brYHMeYe1SQ0+hauRt\nOoTL0g1/6MaK1J8FrwbfgjjTEBl1y+Df11bmWgmlfEbyG6yIy7RbFkr+Ra2G\nHLUHu0HoWg/ZyBI9KXdmbErGDfIsRRRsW6NkpyK1b6AQfD3r22FS6u0xhaZc\nT/WjJEM+LyIEp4PQizb7g7gLHLLLke5vwphzs0sZ5Ppb9Pb+BbISJSZt32OH\nbkNL3sPvahfdfUZR3vsi9/vqDhIFRLdBbqLCDRNTIfwncFspkuhGDWBTP7tZ\n3zvDjbaa8ELKSJTlcx7GHukiz1glrjpDK5elZ/tm3sc+PQ29z1/IZ17ApbHY\nriesueVCru6/WuD6F7V1O+xDXaAFcOEIlPY55g+3YEzZrw3YdC6gE7NMA8WY\n1eW2Lu1IdiWMAk1F6KEzzyKe67VPUT2es8kPC7FL8k2XxMrLdAdw8EAxmy11\nQ4VDgmgeEEnS3Z6ImaCD7HNEpVYrnIRNadgjkEY6Oz3CxER7nCRMIbuYSOmL\nt2NisK3aXYJuwgPD/9pRnw4h3lGRb9TAnGtUmILUdqAxCtm9xt3tCWJ91JzA\nS7AMszSEKpy0N1VlPaxB3s5yfrVzmhyBcEBj/tcWCt4Au6ipujxllKXz1VWP\n91JM\r\n=g+jQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFg97UHT+OHUKqMKZCyOTv78PcA2EXUs/P/tZqaW7M+wIgSoae7Vom++ZAj5i/FIpMGweHu7o8/kbqtmCCjoVSVd0="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.9_1603421824467_0.9581464164754507"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.9\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.134":{"name":"@leanup/cli","version":"1.1.0-rc.134","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.9","@leanup/cli-core-format":"~1.1.0-rc.127","@leanup/cli-core-lint":"^1.1.0-webpack.9","@leanup/cli-core-test":"^1.1.0-webpack.8","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.3","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^4.0.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.14.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.134","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-j7kq+2i9K04ZDCOa4oYhRz8fgwsGRW49kmHaFRj5+iGDu5X7AL+PU3hsVyAdYdkjmtd96ChQdgVG4Qkc0YR1tg==","shasum":"15536240ee55b3984436857636f1090155165dc3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.134.tgz","fileCount":51,"unpackedSize":380597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkzjFCRA9TVsSAnZWagAAnPQP+wSwb0PfOtoBoJhRS6Mp\np754O+H5Ng8EbckC8TnTtfkSgQPPivFvorAMHs7JZ9L6coCN0scuCWLhzbXU\nEcFBeTJZ8j895dFU03uuEDlQk3+u+LKP3PzJtXhwOKgUPwRKXWTmCnbv16/P\nYt8LBOngo9+sMTbG7CvDt7G1jiXGsuTwBMqblEVMqLlkVMEuDH/dx7BBL41x\nsLQ156OXHYZzN1/jBPojJHEhaROvPh2mIwmut0DvwGdbIG5AMVQYxtyaqNvj\n092wM4CwF7aHxvFlPGhN1HhM6JHsU0PXtRIFlL7SbrxF4hLHLis1HkY2HGay\nt3QN9MtYRQ5NWMcC6dZwgV6fiOu/AdrYYU1YX06zb+U6+U36v/WwyCd7N9hb\nVgJri2MsqZputh9tkxrDitBboQvY+z1woV/OWW3g8/UAmNEnAdBnPPBL/UJS\nHhVZLqah7dF9Lsyxmm1TYBIccQ0G6qBK/GO2C7J6omnd52n+LAJ//qgcQN3h\nwRE+v8UUyH5iGHDB3U9YXaguzPkUubS4gnkvuxhhCeSvEIjUcHbEixD8o5SP\nxFWgb0XN6AbHDnT0vPSrybtj2Msj/W2yP7tTNMfGpksL9TgjiPPjGblIlaIa\nq97qgml9lCMuTzv2ikRXxWezt3WL7Bl1NjMb2I4ukrVb3WIKECFKjsC13ukC\nlSDu\r\n=NcVw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFdUDfrgGDv5iDg2MzfQ/fKPKYHFwDEHRZms4qQWP/iiAiBkht9dpncUdbLmO2uOkmi1FPIMmQqvkCtl99cwjTQIBA=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.134_1603483844554_0.01361014199307431"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.134\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.34":{"name":"@leanup/cli","version":"1.0.34","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.34","@leanup/cli-core-format":"^1.0.34","@leanup/cli-core-lint":"^1.0.34","@leanup/cli-core-test":"^1.0.34","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.27.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.34","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PiXmZbbavCLWl4wubCw+yp6hGh0LnmhTl7Kz+smAL68zmhkXfFvDuD2Fx4c9y36uTseoIhNwTJ9tZs9qGUE8ZA==","shasum":"e0e3b9eb7f38f5060536460c2794a93272647022","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.34.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfk5+VCRA9TVsSAnZWagAAAoQQAJ+27/oEqUPgjR1IrZ4P\nrZT1QWZTHpvz2inj7gll8GsX+YfV2UmSO14CNOJBotC/QQvv4DLFsOg4H7+v\nLTpyH6M5rXT3ujNonXEAUs57R/86Ny5Prdmgtf8fR+UELiInXom3EZKemN6p\ne4hF0wQf9EMa0XK4t+8NTcFbJo0itxJxwGTSItrS08aVAcM52NAlkFNj4WTy\n/754ySdqjFenld4ePx7Pff1hRoq+d1Ts2R2VzNizBzWda6CFjDxWn/c1MXyA\n3I2aPmLldJwX+RKLeBpjk0KsnspRuxtZ36Q9nD/t60eY/xqvtviBUm++KwqC\nkQG88TvqJWtbgEiPEcyQAgdA8qKb5VDf/Uu7qLYAy3lbqJBtLagyNelFb2oQ\nfFi7yZbbgaoYAYaDOREmtY07vyW2nuGhCZBNLATM/npYHJXKXDK2xVF1awvJ\n7gVhvmUMXlfE8/4vg3Oj1DvYHYCaS2PyQV5Zv3V9yFfRBfakPndzOqp5ytaT\nbx+BZnD9h4QkAQjduJ4JEnQGXlHMvn4fW8UqUz6k8TUWHCDwZAQytg6SoO0x\nzI6W+wd61CczJgV+SgOWRl6xQH6/RAVBj5T2Dse+iHlLWBoOi+FndFWHuHF9\ndO/8Ri+vKbDVuGqi6nJlTrvMD7DsZFlNulXyy43BL4BOFVaQ96zm0y15en+8\nP3tS\r\n=jCpq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHm8JFwQ4IAwwervIb3BBRDwETPbY7FYogV/jal1VfaVAiEAssvSkpPQd87coP0S7h7pcHvZh7iwzusENGT6t8LpqeU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.34_1603510164858_0.653535427583811"},"_hasShrinkwrap":false},"1.1.0-webpack.10":{"name":"@leanup/cli","version":"1.1.0-webpack.10","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.9","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.10","@leanup/cli-core-test":"^1.1.0-webpack.8","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.1.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.1.1","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.2.0","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.14.2","tsc":"^1.20150623.0","typescript":"^4.0.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.10","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-46qjMns+lG7EpH5UJLM7tX46OQMznyObgiTyoOfXuA6JSHWKPTAIfuRK0Y+GIf9rFq/6OkBU7ZfMTcpHGc+Nbw==","shasum":"fd86e701c489438a6a6db26bfdcaf9b56402dec3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.10.tgz","fileCount":51,"unpackedSize":380607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfk7KCCRA9TVsSAnZWagAALZ4QAJpb6L0cYSxdfk6XQMhy\ne9/5VskMGbQlqm8z+GCFaV2vGiQiJFBSlJAZwB1smJ5VKjZzry26weODYm4+\nxdO7GrOD0CDZbbGbgw1yOIhw47WVSKRcUpBo9XyCm6w6whDF9RoVl1V9PB3k\nFPwXEL+6GSpoDXWRKqgk3raAQonUMnCcabckisJRfwmUbngTLrp65txFMto5\n2Tv4HOce2BH+QvgHzjP4SqzkxeM1wZ2sGU+vizKl80MgGdl/+e+F6OnKvsKB\nwDWMLES2ThNn5xLwmnFybNik3yoArfvXOatcrzwCjEsQNYl+dB7S5QxGv5mK\nzwatqPbvI0PaILhkwjyHYQC8UycT+Al7ZlwcKY2SWSJl7Scek+rSBHIrdFSb\n3CE4rP/c8hS+5d0Nx6BAdKixRKnvQxYFjDkxexHoq7Go1UkVMwRPH8w7OTvx\nbaL4kP9ZVGl04hb4rrLT5njVqnFZkp63t4+XlhJA3NHI+AbtPENdUqRUCuyT\nZtdnMhzB1D+MZfaruZEoDc60dqMPVr1/zykL49CWD4Vf0FKXGf7SZQItzvuc\nLFRWlRoVteBpfbAhqGwk2vSXnUtFxzoBBbyW/AEeJjr1xW1cPk4lZ0Cx7JGd\nxTKHzNnfqK+TmZyb+tA34+Iqqq4SmgztniL4reSh0xI+0pUOH4VESYmE1gQ0\noel3\r\n=kg7Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGDcQ/pA4FWkjTNeiNFhwKHPQ3NwmcdHdN7QsHBs0s0AiAfALb9lBlGavH44luFVR0gEtnXd5L0XJjXh0M+pFwEuw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.10_1603515009824_0.605214713307767"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.10\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.35":{"name":"@leanup/cli","version":"1.0.35","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.34","@leanup/cli-core-format":"^1.0.34","@leanup/cli-core-lint":"^1.0.35","@leanup/cli-core-test":"^1.0.34","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.27.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.5","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.35","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GoGZ8Tb2phjpUANFFpLZ8vOsmtbZtG2mNrlVhDqqx+g7EeFPqH16uCPuT+E6BJrLbqHnBIsBAlCvLtrD7va+AA==","shasum":"9d74c9addf32bf502da93528d8fdf2e7f360f26e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.35.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmN9VCRA9TVsSAnZWagAANIwP/1AzgfE7VZBdLVYJy/er\nOzTSBXhaY1rw6VYElDKmRzttSxRl3o9NHr766TJaeBhhpYl/CO8uqlkBa4Un\nxTa68JHtRhmP9FXfbHaOtrFzQBfDMv/23zwFV0I9vGfxOkNBNC7N2P3Lkgc+\n7ST6Et5xztV/BOtqCTXjhWE6NWjRjkxnUogEf/zLbr1qJVdP5Z/0o+fe+egd\nCF8R7QUK8fjvMENbXb2feBJ5WT/o1c6xjy2lWLRSIoEN+atyMe8QOvtI+lQH\nxlEy1FEPPKcSNuKc3rCW/wLzyGJrFgfukYizDmLwqXok4eU0idat63ohto+z\nQg4lt6z2/gHadiaVuYsx/FF3V7vXArpjkMw56S3B3KHjwvjHktSfsrMibMEW\niNVGim93q4CbMqAsMfv3R8ELX4VDXyXQ8yglVFyezZb07lfuEhxAwe4l03iw\nEma/7/pYke1sky+qNpQ3NRHP5qD7a2XnZLQ2vlJr2PMpcezvtL9sQawHFD8/\nOIblIgNLO+hhxvKMv8Lhb8N5uSBH7+ZVuRs6XLO5gC4kjYavaHBjK4iROD9n\netRKL17uRVz895EZ23MJBRBMZjVHwC6Z3viQx9fc6PLUn+cwP15qBumkasCV\nY+0FUMLMh2bUTDARk5B16nYOfz89lTMkcUxT3wcz6uQjc4WQaX4/T02Noeik\na5Hk\r\n=1E4U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDuJiRV3dn8uCvygHtgvqRTnHJxaUmwGy6NMlx74wRqfAiEA4Czk5cp4O07UKQccQHlGqRgwjKtGjh407e+MbQJKJY4="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.35_1603854164621_0.504170255806621"},"_hasShrinkwrap":false},"1.1.0-rc.135":{"name":"@leanup/cli","version":"1.1.0-rc.135","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.135","@leanup/cli-core-format":"^1.1.0-rc.135","@leanup/cli-core-lint":"^1.1.0-webpack.10","@leanup/cli-core-test":"^1.1.0-rc.135","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.27.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.3.0","webpack-cli":"^4.1.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.5","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.135","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hTiYOAujLcMAMRaR3iru/pZVQXvMQuwUmiO0GC/MIByzIkgGVKxnUylUMrdjKNoFujgITXGjh6cPSIkeuTDt2A==","shasum":"cf114ad5f1fee3a571a100648a69aac09c7a4f8a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.135.tgz","fileCount":51,"unpackedSize":380595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmOQuCRA9TVsSAnZWagAAqHIQAIN2jNkpkgaX9dbGZDxw\nteG5o4j2zL8XfpJ18Dpw1Qte72p46OHPYU/3pCG4j+/a0He6qS9n9wUWcz+s\nbtiXQtxVBZ0uyr4dVtdfrcjbpVQpN/Mrq/htDO4BEKiKP6njEZNVWbJzA3Th\nRAsIDj/imwCMS37nXCMOWf29LUyfgZRLO/8rQmXK/IGakJ0Q43fQc0eDgmTP\nic7Zd/qGl9jkl4HmU91wC/6ztpx9eQ1N+eqfq7+TSjVdedze/hTEr6cQ3iWD\nFaA9zFXBRLGjbTWnEnP47CVKmmOab6P0UvB3Uk2y21Y+LTCDT03T0rQLpSCJ\ncYhLn5QnKT7mHofJUsLByryhIC7UZ1HawHcJFKdIk4SE4zZb+7wTkY6KOmFl\nkvjfC384GwduwuMizCMl9i44Ciegkt31wcgroYIbCWrN6Y87qeS5IywrMj7O\nHq8GBj+vyXkhx8TchqRdQ8ojoxAWmI8Ff/7TBuJmkLpwu5/lpYfM1nOqQO1F\nAp914rz4HYeHG//D8nvcRJyGWdQSmUxgzGJk+H1W3rVtUZX4yrhXIXXikOI2\nVJmGm86YjRCBlNk9Z04lf/kTifL2E+O0Sp1sCYEj4e2NMCfScnXB6jsSX3Mh\nf7Dg2iuDHGKZJx6vo0bsp3H0ES6lUnNvAi5FRH5hc3cbe6wwUUnTnRoYqENN\nwsbf\r\n=S+Gr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCrnhkFERshNd+Esm/OYPL9UgoTKfHoNdft2QeJVAbZQIgVndF4sg3Om2zQomRnUzPRtiMcXL6R3aea4E8D0RNRyU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.135_1603855406395_0.4111668467625067"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.135\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.137":{"name":"@leanup/cli","version":"1.1.0-rc.137","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.137","@leanup/cli-core-format":"^1.1.0-rc.135","@leanup/cli-core-lint":"^1.1.0-webpack.10","@leanup/cli-core-test":"^1.1.0-rc.137","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.27.1","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.3.1","webpack-cli":"^4.1.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.137","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LDovvGO8x4788PcT19BJItWQIprAti9WFvTSsTODV1cavFJqJ45fH1afQGvva6M8CPpRPFrYuaOp8sorO9vr5g==","shasum":"799009a9458b749112c75aa9bf5ab3f0bb8ea705","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.137.tgz","fileCount":51,"unpackedSize":380600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmu+MCRA9TVsSAnZWagAAcZ4P/iYNsnD0zSToGWrVBf2N\nkXuxly1Q1vPMpZYS8xalStN1A8KMMO9kNTQIIoZMFj0abLwX55kmYE8zHAaI\naE9fgO1zGP4t2w0YOEi4aWXmXyRYt95uI/YQZViOTxzD6tebAWrp8+LujeFJ\nW685aG/92xj2qwvSNDfQFfB+mid9sthwdbdfPH0dGGeOSxYwaykMfqOyjSyV\nuaSxIYE3ff6JvKWTKAil4oQrT6E4hqJUNNGQxypFr0WCCOsbl+Ih2H5xO7wn\nbTM9Ivw61rfc/qha2Ddg5RjeHkQOA2JQp/WYu5YGfH3+5/sHHIgkPXTN0c2L\nwo/ZUXegSkCNHCeRuRrJQnbgfKmnUBzW7+UVX9xd/QUUanHbem4Hy/VnIAiU\nd7XFGych0s4CHeh4ActmO9CL72tjaNEQenal1vjCwMxHOJUP3exxbQFuvosa\nCBNbXp+BP1EAiRJORQmtI+I6Yr0liM1CY7j6DRbjIRKDsNt/W40ezvTNJo80\nj/fPnzvhcjDi5sfiUFAVRlIIGsJz4qDg87f+e8qnvvKY6+avygSJVYF97SmA\nMmpDenJ49i7YgdXDjlmtrSGYvPn+5455HEyCHToZgUq7q00GwNxAzcpA43NC\n4Yf26j481UDYR1jwo7bJkHMGPdxyzODttYRmvMRQIA5j7LHDS2dtAJ9anDhw\nyHmG\r\n=3uJH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5L2xdiez5qmh7ZSv4emkL/x/B5F2xpo5fo/0mn3GIWAIgNh1e5+cTa+lg9An34CxUkqlsd2/O72uqLKAolrtmvHU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.137_1603989387900_0.8087384548560499"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.137\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.36":{"name":"@leanup/cli","version":"1.0.36","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.36","@leanup/cli-core-format":"^1.0.34","@leanup/cli-core-lint":"^1.0.35","@leanup/cli-core-test":"^1.0.36","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.27.1","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.36","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-NR85Wk5sL50TfSWCTIRYMuwI3EOaqJB1jQL5xxlg7MHfJV+sWiRJQwA/35+e3im3IynuEtgClKoscTqPqxowuw==","shasum":"f1eea5881d30576ac0799874a027233c15bc960c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.36.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmvM5CRA9TVsSAnZWagAAAt4QAJONrqtzyVAbPpAcGNNY\naPgarF4nYkD70qeXhZrvWiC2XjhiLYwuvfROpvJ0zQ/qNU82hxduydgrXuOd\n1cCxnGRcIWuaatYyXVKqO5UqyMMB2+cGNpXG6C1k7WReOetHPbhXiqj58BRA\nI8idX4C6Ochk/AsQQpH2uCHhhFv1WbCeK8zwQksNzbyPEectF6xQ+A5nvdrB\nho1k9sewluYbITxUZV6X7BATRyUnIlUaxt+m0sQL6K3OG8Rg02v26mqACnU6\ncPvVB++aWl+FgBWaXww81eB7e0qBiC2wFCWmM7ZZARPLODRWljpO0OjedpnC\nobvtHjjwF1QIrPWRIP0ydzQ847noofNxv453jZwyqG36zs0dZvNv+RBXxrjR\nOjMeDYg/ufz7+q/BS3eCtKic2pT8GOwlludQP8BWzkmQtaXZFdOKEMekhpIG\nSGMTW2FUTmeRc20SA42j2EJjp7p7CoRS0sADwgqLtvrm3sBtMf/Xj/byrurG\nO2qboCHwLkoarVXeBt8KETcAd9Kt+wpzdZGj0Jry3RaTBIZ8Y9AXvD4+0Cj4\ngnpeR1cMyvZtpHTG4frqTC4iSx4QZLPW0gSPxRC7WsTIVdoyVEPMXDOtcWI7\neS4YHeXJF2gViXnKSzQYVZAes0MdPajjyFXZ++xb+0a9SIkWW2I6mZJOkohM\nP0Az\r\n=Tpv+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCo3uvhys8QNa4BS3wM1thU8EGgguY+exMSv1FvttjVowIge8Jme+5+0fUom2xGI7aIoXdLBbA4Z6FMcFFLfQzdI0Y="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.36_1603990329074_0.04718807831206884"},"_hasShrinkwrap":false},"1.1.0-webpack.11":{"name":"@leanup/cli","version":"1.1.0-webpack.11","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.11","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.11","@leanup/cli-core-test":"^1.1.0-webpack.11","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.27.2","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.3.2","webpack-dev-server":"^3.11.0","webpack-nano":"^1.0.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.11","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eVQltGNAkvCP+I8ytILA5RxU8qoHtf8tE4vbAM8//qrc7B3pOojSKlQ6SCLkwS1ehukue1c7twfAXhEz9UMx1g==","shasum":"f114c376c458542fcea10d5a09ee66de70829afc","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.11.tgz","fileCount":51,"unpackedSize":380614,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm0NhCRA9TVsSAnZWagAAunAP/1PF4I45nfUPqA7IL+R7\ncSsiLfIvuq9Tp+mvzecG2hgHAedyzehwoA4FPxUgJpuD0Tx+/FEkWHY+vm5t\nH9urktoxnqYk47euInCbCQToBw/XvMNL5d+HgUwtb3yv1320FYraZZ5Bej3O\n4xGOUw6OlxVzTko0/UtA23vTf8pEsXvKwvX6euyTN7GxvN2migOBYrBV4Wey\nm5hPhAJPYyD+4+RHe8lTA8qhKd61dE1iqEFyS+QXnowN0+RvUtWSTooWr1mU\ntNU2RXMBUe6z1lat5BkB25g3TDuqC7FjWmZq1LPgLzrudmuSwSnaXPRoXnzC\nNoB6BgvOds0jY/mFgaHtRTPuEBABvYQoFCLopmD2NS2wdUCLnBnkCmJN3ePS\n+8JKZXZAVa87Nr+v94GflQIgD7+riJMEY1zWu9ujfMsN1huG/mBz7z68IU4g\n2LieX5Sq1mOhJ2l+vye0Cv6IYG1IQDYEefVAfHWL9JwZXDKsip9RcAcoL7+C\nZaxFEJQlBPsiQQLV0eVQqyiadSHC16EbG2Ys0d9POh+ts3z9T9w8v9Vnhrox\n6VNC00vWgNkgNQxUimvqJqhg4zxZnmmj0SaRdmNtWJLWH0R15LdU6/XF98yZ\nufiAjYIVcc7RK6lg8qC449WR0miVTzZ5Z172R7QZkAWCBzPE4UPj3bHvuSPf\nqYtb\r\n=fmp1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC12WynRbDu7s4dHcWiXUwYgHr0hWfZn3ol4kMSa4PGJQIgKrUdoYIdbFwjKULFYehqGCD5kYhgR4LRbLyno0qirjA="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.11_1604010848538_0.556104605331802"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.11\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.12":{"name":"@leanup/cli","version":"1.1.0-webpack.12","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.12","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.12","@leanup/cli-core-test":"^1.1.0-webpack.12","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.3.2","webpack-cli":"^4.0.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.12","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-I1De8Hc8IjzCw+VCJ4vxq0WfbOAKYp2QnSDZxzIcuESkBXimVtcxo2JQ7eqLMcaABMyFSsnJryQs1u5LRnXSeA==","shasum":"729464d641b42bbadf31997d34f7241317a4d9e4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.12.tgz","fileCount":51,"unpackedSize":380613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm1tbCRA9TVsSAnZWagAAbx0P/34KNO33Y0irEtfCTO/y\ne89uOwnUhWRmSDq2hwjyUqhE2JhkLkfYy2L1amiDaoDJnxL6oTZpUIaN8aU3\n0nmtjMkv9v8P6g8gz/jwWDI3KdBSwdkzi4lf4EbWF5C1ZWLmvwDHL6eea8ZM\noeiB9IeiNsk6pTsaJxBEJ7wZok27t4LoRHYi0dUc3gAehJBM9OeI1di1VpWc\nQQsWTS1DvcY6cHYkJGdF/Idu5Q5OKiQI82EOMH4ncXpGEfztWfXx1kAJ1tKb\n8wet0f9aSiHRNYykDJODUG49H4iF1TYQMvvrrEEinrGSypJZVSSbfNdWmab/\nmxGcnarOHjATI7sFju112FiP/e5HWFDPJcFGa6AivH3DTuBMmy+AEKML2L7E\n6I9/n7jdnezuQGfFJpGugl78c1I/jgT+sADt4dnbxWrvPlMpCbYPImrwUM3c\n8RtlmtiNr7uftA23CbzVDwnCXRjPeog2puqBisM9st3UO4jP1gx9eTLmV0ST\nQ/xHFeIdE/796/OWCOgYd6g4FuGnrNHniZvwCmtAKowq0tetnisgvmaHIW+G\nb7f1kizNz4HpN/rpsbTBSPhPH6naKlOsRt/u/94seMrSbd+FRX8Xnz1Mjvg7\n8lgO3PIStnkjMt8IKY/FegBnrP5GUuafuKXvwG+Pmg2G7Vm9pamyykOPfK9F\nMlYt\r\n=+W+j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+lqjiKzzMEbVnldLltTt2QZSePp6aMK7KkTDSuCW4awIhAKtclkRTqw2qwB3jdRbE9EXajLzrNCp3HnA0PeHe63+H"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.12_1604016986869_0.1546120912536666"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.12\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.138":{"name":"@leanup/cli","version":"1.1.0-rc.138","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.12","@leanup/cli-core-format":"^1.1.0-rc.135","@leanup/cli-core-lint":"^1.1.0-webpack.12","@leanup/cli-core-test":"^1.1.0-webpack.12","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.3.2","webpack-cli":"^4.1.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.138","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5V5M7Z4t1pEjY01RyrWs2/girS+aQoLbt3odd6aDY25O3txioR/ZXHpVTTs29dHsJzlGVziDlHw2phKFyfkERg==","shasum":"31b9afa07eb19f1d3dfeb8b1b65074332dc9daa4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.138.tgz","fileCount":51,"unpackedSize":380608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnMndCRA9TVsSAnZWagAAN/oP/1bUCEV1+nFE2Rtmk6W0\ny2Pb9MksJ28rtKzRqH+uJC42KV7uTuTf+2SNmZfv1nOpEjSJfh7TBlBsc34M\nFSlhFkM2WR8PmrC0IFsFKEe9vRlGopLTT9Laj/Fm2JldONh5mm6cRMzsMG43\n+/cCpSjhDTjjF5Ldu70NrLIfc5cyjZZXJooiTMA6xpOLxsem3eHqk8IDbvkm\nG1w1uhGtamLJGkkUvEoZ3mfA9fZlVygChowqNQDJAA1cxiCL9Npye9tQkwew\n5h+uh57Sr8jB359AXkUVs3p5t6Y+cyy0MLhEfGAqimZltGa/kevwWOO85QLT\nNCRLwhyYxf4NSx3n3VSX2s/S9elrLHKvoAssZzOzI5ruczRWpVw2EughsCBp\nKNmJ3zyLRnBEgO1XZvuroirfMfrfcMdaPCETKHrg0xq22f9u5xYaXpPA3SQa\ni3DxmdCs0jeUIMD8hv5UohDAGXgU/R/Kyego4ieuQ7okzdCbTGkInR6H/B7C\nq9wqw/rgbhMpHWeNMCxtykX3Gqo149PWsA+xzKfVh/NGp4njTmPxix80kkXI\nGIXf4cENIpTCWwrMz7AGr/0s/OFBnmb7a5jFlZzfSGKFykREKJwBNiwnpCVP\nLZJaSjunU4a3f9+v0h5URCJJCgwVynsUM/J/YpYL4qFfpbij6xHr9/xIeyEo\ndmGS\r\n=Pulc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDv7tTDm+i8btl4pSHrgfTFFL2Pab0hlb8Yyq8LoFPSeAiAx40sItNxTyyV3DYRRBBFAtHZqz85edk3fWIMkDL0AZw=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.138_1604110813143_0.20102686964550376"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.138\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.13":{"name":"@leanup/cli","version":"1.1.0-webpack.13","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.12","@leanup/cli-core-format":"~1.1.0-webpack.1","@leanup/cli-core-lint":"^1.1.0-webpack.12","@leanup/cli-core-test":"^1.1.0-webpack.12","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.3.2","webpack-cli":"^4.0.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.13","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+RFuCvwyUlpD5Hd5UPTAePPhywgLAdEcSsSKuQOF1VVs4fRCRvQScEUWUhMrtvb0Ftdrlapb49LN4z+QoQwWZg==","shasum":"463725ceb1a9ce62962040b64e1acd8724a5be08","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.13.tgz","fileCount":51,"unpackedSize":380613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnMntCRA9TVsSAnZWagAACVsQAJfpZonuHYxvCwApPxQb\n3zOnS8WmQizUtXlsEOxI/3QbjrzSnNrSHLro8m9s2g87UBiwddu2ywTL0p7K\nUXB7sWbabUM4GiR5VNR0Bp5KE8jsBwEoboHyoavL94RzZCy7ONwjI4E2URrf\nFrnTGXG4Px/kCLo8niU5DntmkalnGGlM2JP7VxWbvFqLcF6lvaDGKuHvcCUS\nb9qGIQzFD0J0JYevo/qM7h+768ecK1gWD3KMUlkO5g+bPLS+uuQ8MdoK0V58\n0fvbgZklrb5lugcVfx8ZP754EBpH8PLdr3JTDZ/jCWDbPDes0Av296ZGuj8a\nGaUpkR5yqZqgNeUeWDMa/xrUL9nGLqIuJSD00rtPWGDTITjrllFu+oHbYhWi\nkP+ClNI1hmoDV6FxeCv3HpIZwgt5mZSmuglQ41b825/lKBwC9KRiVMWtjD1o\no+F9ZBTpHFjiO7M0arqz4iXUhVZk6ozZ4f+WMrguaAO8HD9Hc5HI3G172C5p\nEn82OkN0PiWOJScEL2Zj+n5bBd2VVYQj4XXyn5Vdtn0GDSGz9K64BJYI4VnD\nceOU7cBXsc04DvohH9sr+6RKkc2ByIBX79FRIhuWb3r4dKQ0OcfmtwvKiGWv\nFDKMFVif2kmREEtluhnsqgswuBp/l1A7a1lbdHTzyJnK0oDGZ94hAf2ReQRL\nkJ9E\r\n=jZp7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDIN+80Vlr/+gxyOD8fwEur2xSJDij6ClguCSa9Iwq/AIgb3umVfRen2t3T41nwX5Xp1438UYAfdxZIfN7rbhF6TU="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.13_1604110829150_0.394665751831093"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.13\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.37":{"name":"@leanup/cli","version":"1.0.37","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.37","@leanup/cli-core-format":"^1.0.34","@leanup/cli-core-lint":"^1.0.35","@leanup/cli-core-test":"^1.0.36","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.28.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://img.shields.io/david/leanupjs/leanup?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.37","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6UFO0VdBpOl8VzVFHOzm3997zDEAwyekw7i0X8IdHcVgsM5+BU3CtpKEd+BtUyM0mjGYKhpWdusL/vzYitaQ2g==","shasum":"4eb0edaf28cbb3c9a1bc6489e0cccd38f428851b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.37.tgz","fileCount":51,"unpackedSize":379938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnMxYCRA9TVsSAnZWagAAuz4P/3PjAGfMMfjHOtzSp76w\nIrw8Si6tDOZeNwJ98JrfM6hqTLVVg0o1AxQhP8XXr4FJibXyjYBANASHDIm8\n1qXRW0oU34WY9Pc1/lukLhyZ986b0esCip/dY99J39R9dWIZeBpfLY6rL1kP\no/1sSlBoJtm/E9D0C1w/i+xc7H08cr9EKSGJqxOI/kdI1uyIXAya73n1nPwk\ni12ZhC04pY/yUsvf5EwUUeE8Ya7mYGw1ArqnhX4K6mCVgF6D6l8Suhep/AR4\nZO74MVHWwNVGSTKb0YRI+NJfnSyQwszw8+APDbGQmH4dlS4CVoaVyBB6TVHS\n6Cck51zT9q6Sl+qu+VE/hfw1k9UCd7H37QrRoJ23yitt039cdugI3Hy/xXiD\nUlFeZasBrExOcIzItKDsSbWnQYkYYnKyStV6089Asv9k87zIrFL4+M4QMJ8o\nDIrLOGT9BlbLB8Bw4w93vWyJIF/MwCg2XmtrXLqPuax9s1VM7qFtn2AMBdKN\nrlf+D2FWEI/wA47Yrs/bnPUvL6RFJqDitSzjVD8ADNa5Ggm6jfmqfdAbVobG\ns1Ph9gOHvmUaXOKPxBqgTUuPlfppIx3uHeK8oiPFa1oLPPMnZgydG1scJDB2\nDfcJzFVL6/oRqyG+kQXJ6wR10ykrLu+im7IwV23LHkcek8BmwQU1957hz1vr\nZ7Ol\r\n=i9ml\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDqTAZ/XtfNQUiCJRbjOPYM9NrZ6fcFnYI/sx9wSQCdBAiA1+s505tZwF3QSCQ0xbSKbUQac3R4aLjLhGuj+VOPx6Q=="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.37_1604111448261_0.38118994120879934"},"_hasShrinkwrap":false},"1.1.0-rc.139":{"name":"@leanup/cli","version":"1.1.0-rc.139","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.12","@leanup/cli-core-format":"^1.1.0-rc.139","@leanup/cli-core-lint":"^1.1.0-webpack.12","@leanup/cli-core-test":"^1.1.0-webpack.12","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.3.2","webpack-cli":"^4.1.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.139","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UUVRnjBBG18zwjrogDb6Yal4b1HZ2VQ7s7mdQW4V6QrGlX02h1Ayl6vu1PLP5Rpgg3bulFt18QChIRLrzKG/2g==","shasum":"9736bc5be2625447360cd10e1f7bd77f9a5accea","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.139.tgz","fileCount":51,"unpackedSize":380681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnkoPCRA9TVsSAnZWagAAGtAP/A048UzKwTWuraB8pzAW\nDHar98+cI5mCGT9z95gs9tct2086c/SXEw3Nu7O9ZooUFAIz8ogMTpOas5I0\n4H/c6PAyTedT1z3j0UQO32eOMkbWio1l8a8LCOQJLL772ujHsA7YT6aHJsa4\nYczmHRVsgo7slS3fT5KX/1TyRgC8E532gzIZNmC1JKXpbdkh5/jwOxX8rtfY\nTqOO/vKuWjJ5OeegcloZ9qJd0WgeFboXJPtf+A+90sl8dJILnd2+23aqbl/0\nsj1sbMZuVTXgI27aZhHs47WUYkc4KZMkxrimtRysNFl9khxv9voNq1xWF9ov\nFOhteG+yt5X+yXND0exgQIPnP6iXrC78noo3wN1R5gJ3NmZvczyxwbFC3ZjB\n57kPB1y7eps71BlhpaFTVPmmumRhNn2Nq9TmY3mOebcmlMCqhlNdH2Fr40bj\nKImBkPUD7a2hA4eTS+iNSSg+nwLZTaln0h0u+KAviyktTS6Vze7uGHgD3yno\nRR9gjHz99Gzw1IBpSvL5h9m9rBMYJ5N6iIW9fp8s/txF9WdqBSoLLFqcNxEC\nKbraurWjaFnlv85SR70/whdGbSvdrumEBjNBtYcwrF6fqUEjG+GiLt7RLa+u\nYm3BiTsaQ8mOsKbQNq3NR3nH7nKAnzrLa9gPxLFbqrDW0CTxrv1JlmWULQS/\nWAFQ\r\n=cy1p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAWRc5kOtBw70B9Sb2eJ6PqvY4m/erJABHCGPhOUBJ2XAiEA4FtyHvCbF+WGO8kaVINs+p+Z2hgSf5/YA+OTJku4GuY="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.139_1604209166514_0.04424401808726697"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.139\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.14":{"name":"@leanup/cli","version":"1.1.0-webpack.14","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.14","@leanup/cli-core-format":"^1.1.0-webpack.14","@leanup/cli-core-lint":"^1.1.0-webpack.14","@leanup/cli-core-test":"^1.1.0-webpack.14","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.3.2","webpack-cli":"^4.0.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.14","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BcfckSuJy8d0YcEULu6NPjc6JjT6pWabopHug6X5jHwfHMPHGMAZv5x8IpWqAQxDhwGIf3kKpRXpXmR7k8OaAQ==","shasum":"5d64091880aa04b4128c6f7fb39dea6e16f9bfa3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.14.tgz","fileCount":51,"unpackedSize":380722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnk2tCRA9TVsSAnZWagAA+gYP/2kjbFQy40Fig1ZTWcLp\n8KwVWAwGStBR56BI3/6KwyznM24Sn24UFHpdPr4X3LLQ+dZ896o2b5S3fZSG\nN8gMswi2C+pP+cB0ROex18C5DGHVG14Q8JEZkx0OIURKHFQDIVjhQsYf4YP2\n825zRHZA0HUyD4hWp8CZvJW4ap8K1YITB2Xzrspmu8Awlnnn2if4kSzTvJjd\nVnjR3dAnzuDth1R1UYg7FqVMAouQYsNrk2AXIQ31DQLn+36oIpfzsFRupGE4\n2j4RGB4OTdxb/5IVKhPDC5M3ZQvX8MU26OCZOctuNBDYrSfFamJ/uYGT+v8u\nF2ZR0Gu211hZIoT2XQFxm4mo2IU06xW8LRFOEjgzekBdXGCU9UA+tbnBssqv\nJWkxh7RiFOQSvZWKzpR4eFpiblB6LIk6Ht8V3Dpv2Quj+6Dm0oXBDgkwdUY3\nqzv1QAv3zWKWgsG3UjCdSFGhEVnIkcQ5DWXmnJELh7PxcpR0b8t2vxHAFKLm\ncbWGGBcEx/shBg9cEEGR8XW+ipfHHYbNQVPq1LVA92+zdRuxjr1eGoAlSL/1\nh4K41kDBR1R0TIWRyJDnLd04D1BvXZP4hakfFktI/x79DY9oaa2LC5bOS5ja\nJyTr/VYzBtekcaqWWXDgREJy2aNcG9UueC8y2g0YiDv0mdvihnTjsb1fqMAu\nDI0j\r\n=yO8F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICRx947XM66EgV94r/rYwHORIeAYIyHp3PKZXF9/FmTFAiEAsy1pnzQ8xUmzh7O2tZNUfAhdWay1nvXSiOQvzCPpHX0="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.14_1604210092627_0.2056871903775932"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.14\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.39":{"name":"@leanup/cli","version":"1.0.39","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.39","@leanup/cli-core-format":"^1.0.39","@leanup/cli-core-lint":"^1.0.39","@leanup/cli-core-test":"^1.0.39","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.28.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.39","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/NcSkmVS4c4m+t7xaVqCeXeTi6hT3w1GFIqzhbgxKkiuTLr49PvqG39wzI7HuD6VEahe+uYM6QHttLsfqHSOoQ==","shasum":"28db7cf9f0e6038e825fa0a43697f7e0202204b4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.39.tgz","fileCount":51,"unpackedSize":380011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnk2xCRA9TVsSAnZWagAAIpgP/RTJLslEBT6gM+yk5S9H\nhe5tBoEj4FW9mOKt1dV8z5pir/5CwtxRLjapgmK9U26MryRtO3m+8DVLcH4l\nNCEMREe3MBKN6Jtx7wXOx9KY2ShwFqyuVC9hdWM+q2ZQiU3+dui8NefBWPuJ\n7ZQUYobPNTq14YqBbRK6LqU3sHuZ2VX++JDro4YkhaTXUNz1v5HqatmeftdZ\nlFr9zDWDoUsBv3C1gGhrRiyZfFCSao99vMnJcrtFZ5qcCa+AKB4lVA9MZsKY\njoQLIzme9pkpoxT1/n/vKmO7wuArs1ji6gBr3FAfwkoKNpd1JCWnzpHlBQUu\nTZYS8I6jqYg5lPG6RX1KH5OFyZ+CGEMPEG9mq4CAMFsy+UOSN0LVRhSCftlF\nQU2JR+co2kiol51XnKublwoPf6snflqFJ3b61FvbAu0FSQ/jAm6zksWpIGPp\nsmno8qZ9guYxRJTcMf6jHLQLKe+uLGREP+hpIo4eYIMo9x5GZ9/qZulo0/o6\nopYPgIXHB8+OQUHpgCUxSzb3hqc+Xdxz5aFjdA/UFkyTid7tIFWA6K4VKzCp\nOXf+ynkhDudwfKAKqEUZFNfvQLckdg+R7DIyVJk4LJVIClzHS7mtu/+hyj8B\n80zfg3GcqM2j/iOhB/L1icq39ksCxpq6loFnGObXSHgOe48+vKYOj1rRzrSe\nXCjo\r\n=0SEU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHGQOTWtvqpqQnhLR8t8DCinY6HlrE1B8+0OiRY1xBUwIgCJ332rpu4JSEuU4rGnAskxML3qSxVZu5EJxQXL7a/w8="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.39_1604210097272_0.8522731859244823"},"_hasShrinkwrap":false},"1.0.40":{"name":"@leanup/cli","version":"1.0.40","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.39","@leanup/cli-core-format":"^1.0.39","@leanup/cli-core-lint":"^1.0.39","@leanup/cli-core-test":"^1.0.39","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.28.0","sass-loader":"^10.0.4","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.40","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lrLHS1eZ02TVHIV56GxoOHb0EXE8cDM0VzLg18bn1GcZm1m2u1+2tJ3n4rTpy++2Njy2pe4fK71uLqhiODVW8Q==","shasum":"5672522e474ac22e4162290ae42daab7b13924cb","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.40.tgz","fileCount":51,"unpackedSize":380011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoOCBCRA9TVsSAnZWagAAM5AQAKCMggZ8nnSJpwDL/Jr2\nIzjQIPhPG/Cp9xM+kjFRKu4MDDh/7eLVxiBPSqSGKILxXJ94ZGUtLArqXD2k\njHzeCrw7c/0OVwUU3DWmZChoF2wyyI2mq2/+76otcH3A56bPdfGRiWV9DCCE\nfCEMOyhvVMFwciUDqlZbFq73zMLtwmfI9WmcrIGhoptURGfA12OjfdHvlZ+e\ntXXTsWAUo+DRASIWOsqds/VL3yzyp5suyoRGkgK+yhXIHYKAZ2bjjYz3RxAD\nL6AfEpPLW9hYC7Qhjs4pQMQoHvgVCvqTzwflZ5Y5DTNxtZYA1lVBBZwKyiHz\nGiLkbIRRupk+MMEcsJp5ZIrks/kYl/sZnItXs6MEbJjrjfyd6+jk6xG67Qy7\n+lIATR4NdTZCEKDpwFpLximzfNVPSvcRLSY76K5ToqkAmDs4FjTLRBdZnZSX\noEZ8j54eDBEoMbafRoEQA/m2odxAuhMOepYpEa1ne7mUdPLCXuvFv0CM444C\nsCizVTJDAPtZ8IqS3a5I2xbGQYuj96/2zrDe7on3Hg6AJcS4/KcO0bAmYj3e\nbNS9NIIwVeqNbHxZkuSfIvE+ETgJ8SDcfo9Cl4nEP7xgl1mpqCO5tKd9z6Cq\nalHQKrSHbakq5KlginAZXu7dohhg/+vo/enXNiQ2kg6LA3HqpDMzzRS4kkb7\nF6au\r\n=9Nfg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbecNg/eDJXVcJWa+73X599Ztd+sq+g8SwRfAMarG+2wIhAJmhoupOfK3C2YYvNd8CpqSCYSJVE9IxjOwahFQ7VHMD"}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.40_1604378752511_0.5311261659950455"},"_hasShrinkwrap":false},"1.1.0-rc.140":{"name":"@leanup/cli","version":"1.1.0-rc.140","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.14","@leanup/cli-core-format":"^1.1.0-webpack.14","@leanup/cli-core-lint":"^1.1.0-webpack.14","@leanup/cli-core-test":"^1.1.0-webpack.14","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.3.2","webpack-cli":"^4.1.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.140","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ux3WIx/lOV6syxEwOYxC90xce87WRvGrZiB4oN5B5pKr8M4pbkxtg/FbbdjR2E6brgyy/tC7n6s6IiB2FD1vYw==","shasum":"8f0f57980a3d688ae64056c3cdaf359e3c89bd9b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.140.tgz","fileCount":51,"unpackedSize":380685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoOCgCRA9TVsSAnZWagAA9FkP/A0lgfxXp+f1KiPapf+E\ndIDzQOr9Z/+4kmbAuz6Vn1VFT00J/eeoNf0aleqxOMQaLyoMR9ro380ZOmdc\nGZ6bAYdZsxXeIORYCdO7uugj31YDqlZ7dqXXeYGVc3UZ7+5xyipakBPynr8J\nkPCc3zmwMWUiVk/psp5IFAaPOziXjSRhqxZKey0YHBv/hBKbMyS1dnqFqpTD\nwE+0My5Rxb+7KuUpQuw1uo0L6ge4l8Y++8IPa8ZNc7wbgqsSboQRRv97/yFF\nujIC6tUb1Ceyt4CmKxQfN7kkQN5Z2EkUpSQAx6Wy18T1DPSiLj4WYp6BqV1h\neYsdIjAA5gdAhkGd5UuMTTRR+vjumezo76Qc5x2kl92xCTYerpvnqFuEZ7TB\nuUxPTwNlumaibV+KJJ97gL+tTgkJov9sCUFpnkG5TYyh1hUSvCEO08vANgU4\nirQA/AQ2iBCDJKX+bh6CS8YX4S3qaig0klfCf12ZEKa6bwCwpjjdfoJsJ80t\nXU3eslTxOfVBSOWjrMFQJ+Q/EQXAKmDpsybmhqVdsDj+1dDBlfsByUFDqOk0\nmFY966voZmwwjgHKxhYjvfDGbVGsKPV/ajZILRKRqXIDiQwssE8lrbOzz2Jq\njnDcMgI7c3TxkGjcXVWxHwEUQHbZMNu3qmqs92bwef8vAS1hI9txrl5nR2pd\nm3+x\r\n=sj5s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrY/lkX20OGfVgWVKA2v1OVcAYR47Jkpb8mCpH5hxJcAiEAzvaEDvBMOtpmUXZzukKqUux2BxFeiafv5HHUatZGsIc="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.140_1604378783969_0.13156532083274008"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.140\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-webpack.15":{"name":"@leanup/cli","version":"1.1.0-webpack.15","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^5.3.2","webpack-cli":"^4.0.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2Fwebpack-v5?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-webpack.15","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-N/ao3LVxGn0CMujF3rRT2gIbcxOjf894GfVCDGJA+jc76A1SGa0X5rwjhPEVl/UzNLws9ZgM11w60k4FTvPoOA==","shasum":"6377a92e453306a9a8763faa071a64300b66145a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-webpack.15.tgz","fileCount":51,"unpackedSize":380900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoOKzCRA9TVsSAnZWagAATjIP/AwVNTmZhi0kvwzxDAkc\nWXqOXsFY2OfznQYqySxdBPZMFfW/a/kkxqkOCy1OA7NmVr2Sowx6FzBVg4bS\nb15sfdWfzSb+otW+8fU3j45Al74MHkkTtRD7zZWpELIK9H4YXzruSNy3Q9/w\nymtMzIYnVRESWqJIKQEo5uVIz3dx7PPTx0PYvyCP25lXWTiFbq9LrBYIetFN\nYBfZ+zWW3bPdK4XfNi+Vf0Xmd2fKF5MoAE7g5uWN9JhQfLQ3lVNBcX/xHczG\nxwgVfrFwBdum2/TewwPbHKy1c3km+kAAxs9HldJVLrekTAYG5HaOZCCkOZxw\nIDUL2XqzHeZxeP2jcacGHB0HdU2IhKI8mh31PHlOiifkoCP+Ubqs4059sbzO\noAqLtI+zGrQU9zynT50+3lGP3ha92Tr1mdi3QqhoSu12QM1N05ivc27SpNg4\nObxNikikl/RPYiXve4abRcRmm4DA4nBuIDIBIJPejXJsXH2xNJ9dOGS+B72I\nBX8HUPN5C6ea/HdiPNwRdm39wjGpqw3WQ8zyedj1luzFKxhzobQwgj23CJ4I\nsaRL9tHnzkUbrLL/bAtzqdgLJFFOV8f9Hui7yWc5KGa2RzlLcq3qewVcZqAb\nwxXB6j3MtpjjhM+8+Dwa3lrtxTJ3reAYEuKgisdV7VS3jCbWjrDTdJXJKuD3\nX+IS\r\n=NW9O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMnwOyjbm6/Sr9L5+C5fyR8+M1wLVvP6FHtKQ0fUCgoQIgAN+6Z+kru184X+gbCP0FSf7WFIuiVuT7va96xALIHmE="}]},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-webpack.15_1604379314731_0.9858239609021471"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-webpack.15\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.141":{"name":"@leanup/cli","version":"1.1.0-rc.141","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.2.1","css-loader":"^5.0.0","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.3.2","webpack-cli":"^4.1.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.141","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wh5rlPhLXqE7sKZjS+fAmvuIEipbfiLojIAzgXoRCotSCZmRBqqMOyE8Z1TxeieFM9xfQihm0I2OznR0sfYAFA==","shasum":"0f9a6204545fe7e219a1f3d068089d696ffba000","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.141.tgz","fileCount":51,"unpackedSize":382304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoWe0CRA9TVsSAnZWagAA0q8P/3KthPcgIogYXUKw65A7\ner2D8YJxBEpnzhdegNiioDBw0xVvw5Mv3lycnc2GbzZx04Ltg+rumCH/cIxu\noRVlV06SmuxI8IRmNsIopLfy7u+b/CU9wRoYTVzdAHPr9C3ZalcLEUSh8v6j\nWrm1UK9/KG5r7aqPkO2OeFYIk29iboI1k3i8CFf8Z48xnMLRxopnJLEpcbQe\njzlfc/40XVhSpmCTUBtImuALp9BH52ckvRlJ0Ey9Q9hHTVtSq0/ZZQ+LfsEz\nBk2eAZKxi5f0U9ooXcMZiodtGYwKNw4Glh29EVLMR7KfYKZ0Zcdr5qVdYmfu\nvEts39LvRG0dlS3mOnS/6ceT9AxPCfTIgLLf/sC+Ei3PWPXiBVX5b0cZygsb\ni+8O+sZZwmnCj1IPKpJTOsEM0NltbJ7QPoLF4tx4E1QMTNnOQEuiZtu7kJ3R\nmTcUezerplQrK4930vVwgMrxD0Uy/3dYYZuAr3dOwndoIYjB0cZcBkZT3k4y\nCIyl9Z4JiAuk94Lnm2IiKd3g6s7NHHOGcAZOIw4ua/+AHC6pgv4e/kixZsG/\npMZ8kfkGHKYHFnTNL4FQpAZox+vcSXz0Oqw437+evnHAx3nJus7jYeMsbl2h\naKzktr8GHjpxpD9eevWxg0RXBWXD6mVLIC7dV2h4JAoEKEfC2v67aY+2mrYO\nwXTG\r\n=AbUo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICRM59XSViT4+SwQkZqx1xDBwgfjVv+cMacVt8Zv8N1MAiEA5OFqNfecE/edSgR1CTrWWMCnfVIZen2+68yM2zhnciA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.141_1604413363789_0.8317969151891578"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.141\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.142":{"name":"@leanup/cli","version":"1.1.0-rc.142","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.0","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.1.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.142","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xVPBulRl8ZdorBuf11PZc85fbekXgVx0lTDuYh5WDoib5BatZ2iIClH5hjV0oWKh2XIeI6LMI6vAMv904/BWXQ==","shasum":"98c2b43de740d91b7685d362cbbc855963c33ef8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.142.tgz","fileCount":51,"unpackedSize":381727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoeP8CRA9TVsSAnZWagAAxDkP/0k/T/fjJ2BNHFXXe0Eq\nYMM2Y4WoIAKGPEOdlHH5xoLXmtiSk7uhvDGJkxPzlLxr+Wdpo6NRWubZzG8z\naLLVqsx1BSaRqGkqm4AOUeYhMqDXkFD+MJ2cs6FzMX/bmZl+NRXx05kS/yys\nykBkzoSGCAGpYJUBMk2twbkkgK9skgxoIMI9aRfrk3i8CfTNMtjMsK4LJjsB\nIFZP/kCYV6e6H6PDd8RKJuxrSx6tl25S6wyElN8mcm6ZKEMb+jBYxPqEGHOi\nxtQOu0JwX82GR5ooo+9XVCbJiJN8lXeiawT26fte+HFVrmPt6MNSTnp2M/Do\nZBmp2eZGe29z3ThhyA0+3ZYs3yc0y9/nQS3hl+U6xqm/fhebEroVHnds5URl\nFcf4DJmEV7M7yxqaPeK8fAKHI18i4Y1k8YbOk1XYbmxec3L0EL524zA+ZbN7\ni+zYldv/Au3UUAhWRwe3l07kXs3eL1RInDDmoZW/NaxBBxQq5u8sReUkSOdx\nHGJSRNiBsjEZY9POTNCKV0xHByVPZgJ3Z9pA9E/QxT7gMi564y65uAONmhM2\nUv9Llozto65Hs6zW2TsOyAwXYTvuXadTnxlK4hA7BwsIYr8x+i2JnYYl/rxE\nZgB5G8GzUSuDim7gaAf0DQO++bB2s898j9aoQW/kto1KuxHa0VN29TgO5Jnd\n81Y2\r\n=EJT1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYI45CB2KQD+pINYtID1xb4hj3Kp7TdWaRO6KY2Ek91AIhAKNtoMwrR5ZYmPqBeFJWHUZ2MeNeI3JP3oKIPNAMmM19"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.142_1604445180336_0.9840136730380704"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.142\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.143":{"name":"@leanup/cli","version":"1.1.0-rc.143","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.0","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.28.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.1.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |   Description    | Status | Note                       |\n| ---------------- | :--------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler    |   ✔️   | ready                      |\n| [Webpack]        |     Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language     |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner |   ✔️   | ready                      |\n| [Chai]           |    Assertion     |   ✔️   | ready                      |\n| [Sinon]          |     Mocking      |   ✔️   | ready                      |\n| [NYC]            |  Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker   |   ✔️   | ready                      |\n| [Nightwatch.js]  | E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report      |   ✔️   | ready                      |\n| [Cucumber]       |       BDD        |   ✔️   | ready                      |\n| [robotframework] |       BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |  Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |       API        |   ✔️   | ready                      |\n| [Workbox]        |       PWA        |   ✔️   | ready                      |\n| [Lerna]          |    Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |  Design-System   |   ✔️   | proved                     |\n| [Material]       |  Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |  Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |  Design-System   |   ✔️   | proved                     |\n| [Less]           |       CSS        |   ✔️   | ready                      |\n| [Sass]           |       CSS        |   ✔️   | ready                      |\n| [PostCSS]        |       CSS        |   ✔️   | ready                      |\n| [Webhint]        |     Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       | E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker   |   ❌   | removed \\*\\*               |\n| [Cypress]        | E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.143","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0xmai5PefNXNDfnoHDV7HpfLLeBjAybA5Uhk2h44lemvEE5dHRv+u5LVe1d+ahTJJRkgCRkkFPw2mmw6Cxw98A==","shasum":"c0fe075e2a98bdba7e96ceb2524e85198bceaa23","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.143.tgz","fileCount":51,"unpackedSize":382468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfonXuCRA9TVsSAnZWagAAO1sQAIqmHiwv3TyGxqlg4Lvd\niWcJ6bA5RONvxP5GSHK5LpI+6gL6Jgzq+TTZuCUI9kcxPnrNJZsgrBWFwIbQ\nIStrJar4wraf4AXlV52UcfLC5ji65dU9xN3/XChARlDrACgK8IpgfFf2HoPZ\n5oMdmL2FhSQagKxVr6/lCEypT7ii5xZW5V58/WfYnayKhaEBI1jUMt3fJq30\nDSOlU1F5zCMn8J3JxfYH8NwW+Uqgtc09I0VFPz9myXT3+hxJ96U3r2bRAm+G\noSy1Nn4OtRRm2HzNuA3ZjQ+H9JGq5qaX2TyxRBLRczt/xL777hhldoNyp/yJ\ngnvW9oNVy5a5QYXouayWgAWJkX0xQ2426pAS4cNQQ4eNYEwwM8yUpo5WVUR9\nNgoVjnUyWLI1tNjFnE7ezuoVEzKYBYEyqmmzAn7jWzshgqqzjUsq4OsEu6FA\nLmElDFxxUkXZpsjJ9VVsSsnSAutFHQNciM8KP7SleDJRyT/U6Ib/y4muL4nP\n/l2l1P+hYm1okG9ecrb42O+ESh2IDlHfd29p9Ok/Me//p2tlalV0HBeufY/L\nyotKQlFQvLVAH0BAdLRdZUtK7BdlOwNk1xQux1UB6t//hirSj8QBhhfmJT2E\nUQZZ4neRbbPLqnzzjG4I/emvkARngCFj6M7Zy/mu3KxTAsNsKhIDEWWwS/h/\nqYYv\r\n=lSKZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFiQ2VJ0F9REy5t1m4nPb5NlY/+MvVlI6xYbiDFbyV2bAiAiMCW5JgF7Q1zxXvcWrqEjhXVtbnqFUWMo8QUf3nCyfA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.143_1604482542276_0.7211187312524974"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.143\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.41":{"name":"@leanup/cli","version":"1.0.41","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.39","@leanup/cli-core-format":"^1.0.39","@leanup/cli-core-lint":"^1.0.41","@leanup/cli-core-test":"^1.0.41","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.41","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oOX1PvnCqkusP/SNF9PTpDGx2IHlX5hdfTO4efapP1L7C4B+0HFQn0z5YGTaYYSX47f3JW3juROnUkQhAFAVPQ==","shasum":"21ab1cc6f435567a051bc78e30a49b157a67c8ac","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.41.tgz","fileCount":51,"unpackedSize":381003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo9ATCRA9TVsSAnZWagAADa4P/R9gcLYWgSbrshxvXlPD\nrrJu8pEBtvwqZc9Y18mFoG72FPqQ57ithC/AcbJL5OR3/cwjqVkYAwrxlgeJ\njmhrdDSKg6E8jmLxsODceYMHyLflk6J0AP/1ftg8AWYJ4sSFn+OCo5W5n8cR\nmtSQGulW2coAMEIPhBOQVfxR05qhSdd88nDpmXQovT+fU5eOUtQcuL3K2rAc\njtEBvYLTeN6+TExkt2HxNqXiDOdQcyKig43+ISsPY0BGKxCDJrJmsTKiO0PT\ndd2vS6wBks1d69TRICNDmwQjX2SLrUwYRkXIWrchlG/dJyebhFXqARDMHExp\nlpvV3MaCTyob8EtFe1pWlRxnWZIO4CtIHwcOXjVL1B7CNsY4K67DjF3RB2sa\nqBmfkzYQOQNzxpfAEPSNFD1IvGLFKOXWJP/SRWQ9oCBsCWEqeC0iTEd00b4D\nwsbEfT7MAxNXcP42WWaR0xkAaFU/D0kCzjPJlUUPTcUCSJhI53ErTZS1HLVY\nDYDqZKo5TVLmw/SS1zbz+kj2mw3tff1mnIl3OvYGt9AJpkt9ImWDKm5FBVMD\neAlXT1zfQElb3AiIFPg5oe/wLDBtPy7zqA9IbfWp9/khycvACtwPXxGlQOzn\nkjjWigaY22eZeH0mJFkbnARpsLJOEivu8R+MsfBng3GhrcbxW55IP/YNDxkq\nuiFj\r\n=eXl3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB5cFf07zLS0SpJnfjlHlkPLjf1/DC6yRL4WpRo0qrwKAiAEJ+1DU5SgYPEaZlG4S66z53MjQ/gy83LnQKEOogCadQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.41_1604571155153_0.7001488401932381"},"_hasShrinkwrap":false},"1.1.0-rc.144":{"name":"@leanup/cli","version":"1.1.0-rc.144","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.4","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.144","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UJ0j9WGwTFSQQSKdGTpa+xpnEVdyD/trAGFMlCpjJDNws9Ctgg2lJUMcZzuYuF8rh7wV12XKmEAUvjZObn6y7Q==","shasum":"144e3d8cdf38fad36dad2e6a68ab0669b3a8c655","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.144.tgz","fileCount":51,"unpackedSize":383461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo9BPCRA9TVsSAnZWagAAlR8P/jzd+7+2RwPvrIhH6zGj\n7QaMhWf7mtEgnH4O4fWWZ+F8dQ1r+nI7JDWVEAN80H+g/GC2AMl/CeTURSLI\nrdUBwmlrwMbndoXCc8DaSz45KvyCjnZq85F6UngeahUiAojbirCoVj2zChrB\n61Pmqm7UAh8VmUHRDlFmW5b8rWm1O+p3eVUa6xamZff3KfuFL+iFp68YAVgV\n1HcHmTeYnrBCHvp31Dyg7+87EI6PZYkSL6sQmj5H0b/ZwOjTRFPuv5nRFr7H\ngJjCf+NUhEY1dFrwMWBrVDgQRsXTSbMvDMEFGK+ctMYqAVQCD+5yjKYHxbJB\noe3XT7fTSHtJYmWIjl2fi8wqkCXg8UIxbEcQ1LH8DUqUYZL+O2vGZb6aBSRx\nlENBJb6MKqyTPJCPFVsB8FV44QxBTzm5AV8GjznPvjFO30r9Uz5AmwJANUeD\nPHvlpjUxopqFY6GLeyutSayl1ysnReDgZpxVI9k8zyZQdbAdulmO1cy7JWXO\nxl+vKSk+RM6hlzf+jo5alAO1+bsG39wERkPt7WeDSlVgjIvFM/QTuonj6HC2\n7UiExqVVCDgbvpXImnIqyfqzlN+APDhOR8dDzhE36ugFV0lC6/3N4kSPhR50\nJene9EtOjiTvcGwL3qwznB+hw0SxWse5OCJ/L11aGZXf/W52bvNfDSGrSHgU\nnw5U\r\n=pvbb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG3xiBq7hg0Ke9usF6htORAL0+odrwNoz/Q06bqkHUPgAiEAtpEaSJqJwCf8CEMuudE5dmvrIbJ/s9BMhA7yzZE03Sk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.144_1604571215171_0.4161990156973261"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.144\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.42":{"name":"@leanup/cli","version":"1.0.42","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.39","@leanup/cli-core-format":"^1.0.39","@leanup/cli-core-lint":"^1.0.41","@leanup/cli-core-test":"^1.0.41","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.42","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VY7ZH5sRjtjsIGb3XJ8fdgZVqkFp+xAdxuFAWWMX7npLj8P/KvGx8Vy4HJfDvhMib0z1X0HvYzWvixnCSTzt6w==","shasum":"3c76b2a5007b1dbe2e9575787ceb28c8a25444e1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.42.tgz","fileCount":51,"unpackedSize":381090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpNFjCRA9TVsSAnZWagAAzWcP/07m6MznprDxOWFpAnBY\nWNM0crG85VKAGzIYjk+j3eB1qRY3cLfe/uD+avtrveANfFPY1Q64sNTOkbVR\npaD6I3MZUAbJQ4JycxqopjUMzPol9jbPxpnC3rNRfAltHs/tPHvXzV1+Mi4Z\nJQhIx5ZhEOgU61uRy6s8ihA/YNRpf200WlWtQvHlYgNPv3rvh23kSakvq5ks\nlAATg26191wEQ7jB1Rv7rfPRnt7VtCpuY7J+ZEnLXoTpu1kUy0d9MVs+Ry11\nvJKtwpkNxxFeJDP4tQdHcXeBSvHg+a31SqdTgCuDfnbKqRZxi5KE8XMaDsP1\nQpWRu6X8nNIdgkv1CoAiWKZ5MboFJgO4WcEvuwBG15K8lcSwbXt1bE2fyLxP\n/vSARsNk1b21RE9VTLz0E6YQpEld84Gef57wq0Tu97iYciRr45GXDdWA0aw7\nXrgsJGFvHLK/t3dvTVBzReoJ5cYY9FOOTZ59eafq0F3fum1IaITUfjGWDTG+\n1FSOQcLCOnvPCcGQ9ZACmc8nqFvsDQB9XnkbRKtJJlo+RgwVj+kYJ6a8DiwQ\njfNhzXCWHD3roj/AHRAJTMXsp77UzBLkBos9maRUNaaV7T2UipuV2Lh58znv\nACj0sJK5QmvscZFcVf7NymouSwY3mBCrX8OqoYQpSLEugly/tjts2s74o9LL\nl0N3\r\n=9IHn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4xVhEYjLnYtF2bj9juoYU0L3w+ejjnfpcjkFJpiBCZAIgZntXJV9mgJlegRf6B+aJP0Yu9+9JzAUVxGeu3dbz31Y="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.42_1604637026476_0.6237238709482067"},"_hasShrinkwrap":false},"1.1.0-rc.145":{"name":"@leanup/cli","version":"1.1.0-rc.145","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.2.1","postcss":"^8.1.6","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.145","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UdOQN79v+mvZl48zW03z4nsOyEIfl6yoHVEauh/Jx4wU3EraP3He0QWIqDrUVjg5dLIBDHM84f8vt4zBz+TpMg==","shasum":"98580cb266424cb7286abfd15bf3ed0f37f23e42","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.145.tgz","fileCount":51,"unpackedSize":383548,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpNGFCRA9TVsSAnZWagAAZ2MP/3dzSOUPKBdTy+H4Mogn\nxDz0oJGrhUZagsEq9A7/cr39aWWVKHWbI+bqAZpLorCO8eUAzRknlTNBWtE0\nH3CngYxKkNS4kEF6ngeOT7ev1OJX2MLWFS+qH6MWdo3LLcpgQeAVKtU0A13o\nnW1jRmjgogNt5Dc9+OLFgfWRYx56BAfyK7tQJVBlCxTIKhMa4Rm9T/MZ6mTK\nq6/kS/ggw1U2MOekBTMD3TFcX5P8G5fVc4slarbLAFwQZPOUwT2IgZWhAz4w\ngyn2DfUoCa1iB5dzBKhzPsP2FiN1SwQt0To318CU9A9rEn3f/318AvoVF7w0\nNkGTOUtTI5cfb6sU3VlizUbGzap7nR1lb1lsl5Qmu3nDaXbBhqcSxwUvTNX/\nHISSF1gs9hcf2ji2GTcA8aYktGHP7BxnXXENWwXT66RXqt41MZZ6cp2n5Ymz\nImq65KBlXzj0G5eD+HKTheIz9thGaNoKzJHHCTid1DR4IiHbfRHdJNAUMpUU\nhvP8VJor2PR3q4jV1qqT4lFHUl2SPiSNLJFK5+KK3oljrqiXa4bT/8p7mu/r\njX+LlknW793GNM0LdhiGbM94LWT0mkYkB5rZaKFfQ7mTvtbFtZxdQkTDjjZO\nmJNolUeYZmnEaQXNC4JJEwPvyRQZxMU2IBuGLpps31bGTE3J6N44BINy+3dQ\nTJnU\r\n=+SpB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFPzEYKUmIyzsonnL7YygHJ5cQfkuMX9Gqx1oMen8Ii7AiEA0hZs/qARjzZ1ncTOARNR2kasDctZ/aEOR87hpOlyNg0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.145_1604637061208_0.1408280835397031"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.145\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.146":{"name":"@leanup/cli","version":"1.1.0-rc.146","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.3.0","postcss":"^8.1.6","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                            webpack-name |                                                                                   [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-nano)](https://packagephobia.now.sh/result?p=webpack-nano) | [![vulnerabilities of webpack-nano](https://snyk.io/test/npm/webpack-nano/badge.svg)](https://snyk.io/test/npm/webpack-nano)                                                                                  |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.146","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3LA8KDluQa8J4HswKifpA39Q363ISh7liDB54N3Gj8bTyYCxMKYG5yU4KT8wboui8TfylP0uluFTCvXbXziBkQ==","shasum":"00b2e384cb58f4a2d50d2068da4b2465a83a6647","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.146.tgz","fileCount":51,"unpackedSize":383519,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp39wCRA9TVsSAnZWagAADzYP/RvUkqaKI5amKVBB3XuS\nlZBOgXXzKlWbBjxqhl8+I87zQwnz+PZ9HrfBbCHYP1hNT+PwPmuK7Z+4qA/W\nH6/3EAirRrq0fL0lCvqPmsRESIBJBNjxE+wb2/haQC5YCsva+7qzoSBkoB0D\nKPJYNq7IEVnzFjYL2EQbZK2AYVwoVhc8xRqjb5RmX5ALVauXh9Iw99R1IsS3\n+KxYGiDfcuDw1ExJqdVzlKPKUkUYQsUDLSn4moTu918rkxsQpCtFbpaRktQQ\nNFpnBQOvax8fkly+FFqs6rBkn+8hnuwKSR5jz9leulTNSWHnt4SjmUYcXc4+\npUjtoM7KUr64yszUKXYFZjD6uSkvm1Zwo71Df0AKNoNPatpn4pTfRL+YkBBw\n2dwEhOLGPsxEpIKv4uBeBKWVQ39dhltPr56ees6blwJM07sYeFRWQir1P6Ay\niaHCVmYoh1mKXMmF/eVNcjgGmF5eA18qjzp1rPTwinnq4XK/55WJ6lcSVJi1\nwPeRTBjp3VqUnmhGqfP6dEXpB+YC/vhDx9BcvsGl24eV1o3Mq7l2ixlS679d\napFTVYIMiywYFJ6CTHviqNZ7Q3mK/hnmI/6tedpUn/UrW/M0Og0UqZyjoWiR\nqo8UGkw5C/wGT9g23eb9sdQduaByxS/ut8OQSSHtX+ZYYTvg+ezgUF/89e7P\nftiX\r\n=HzgF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyvrKvtrVTZyvvgRd1PqJub7Iy+Bwn/s49mj465Dr/aQIhAPwE3c6osEdonye9f1Vtf8Li1Wjf+nHpBM3CKjk3V2wA"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.146_1604812655457_0.8178310538129008"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.146\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.43":{"name":"@leanup/cli","version":"1.0.43","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.39","@leanup/cli-core-format":"^1.0.39","@leanup/cli-core-lint":"^1.0.43","@leanup/cli-core-test":"^1.0.41","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.43","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vBjnsd2bDmcmIIu6Ag8byOYDoGzQMYfNucT8DCWL9eOAfjKQQq5Y5dEcUNoHeBn8BphxJ6bfUfmWy6ySdObg9w==","shasum":"4bdafa919fa78a09afc422826d8a35835f70e31f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.43.tgz","fileCount":51,"unpackedSize":381090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp4BxCRA9TVsSAnZWagAA+QIP/0181RMRQ7z9CNM6l2BD\nYNKxUu3cpK2g3sb53RopMZ2kvTIabvV8DpYx7lDpFSM9BBXYY35mplhetSXj\nEzCZWitj+IncNn3CslQHadZOeQ4OY712MRhN8MIAq6R2TB2Jy1lPJYybWNjQ\n3WIPfPFSDlFPJ9LN83jo1FGyCgQgPv29cyjqqhPQW3TIHu2t6ccR2Z31XzqH\ntbeeOT5DIz790k5NCbVIpT9ZY9rZAGZmWhzsCIuN4EbA50beURvfDj71L3aa\nRYhmx+3yt3nriVvPwDF9LbA64uD+/JRplKVUaBzwp2fzXp8W/WZ0pL4cKcyH\nb9Mb3XIfPLMSW3h0mgd0fbnI3oWojhusF/i5keYK5Uuod//oh+2/cm4tZ5nS\nL1Pwtyl0LGM274NnpkUY4oGbPpJlz9FtYyLSVIXbbtFuUJCZkWETJsPqQ7IC\nco6rOiGcTh/64ObaPL6EBwzWATQQ4F6mKH5KW97bPvB2O06kJq+XQzWzRYdA\nb05hdMxAjGMiu4r2X214jEBvSppjCALhmSn+fnZIdBgEpxbpODX8Bja7vfLy\n1FAgSlgMdz2vCKYXc+2KkEI1ZjucCF2vcPvARyT5H6lw9drPIEXuXUBV27SZ\n7rrEVI2O3YYVmt0jHR+baklq18XXUVjvn1OVREXCi+l83qst2aS7gwxupBgl\ncpew\r\n=f83C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCR/vP+i7XYuSyWlYvfdq4zSgFY+2uinJWYcwxFSWWFmAIgLSMW/YBe780Dlw42qcSrhGLJtbMLzBVpOmma77KXQ6M="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.43_1604812913185_0.4557556158639646"},"_hasShrinkwrap":false},"1.1.0-rc.147":{"name":"@leanup/cli","version":"1.1.0-rc.147","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.3.0","postcss":"^8.1.6","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.147","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HLrmEd4de9IUN7yO3xhToYasMn5aUBeQ0NfV1kCUFyh3QATxClGosV0oxac+JDgdRsvn+D8Fo3HOzwDAt5n6nw==","shasum":"55772a2e6053e63e25f84e8e88dd9c0aee4bcdd1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.147.tgz","fileCount":51,"unpackedSize":384230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp46+CRA9TVsSAnZWagAAZH4P/3ptN7ZzapYXgxihpGmy\nqhB406gr26A5QMLGc7eKgI+5DjMaaY1FUMScZ8o4ZZ39oFXF4z89aUSLdVgw\nZ8XHF0NXE5L9AHpp97gOA6sxXyDh8UDxL80M7xuloFEG9Ol2lENEIGUcOkOp\nnpX0kNUHDNCuRaYuGnTDxznXNDeX5dFM2+vfqv2SzGXfBxx44Bpx4Ia7pySO\nhkdluS1/2aq7qCYBY7jr5XG5RySDygt4RlvGO7ViuM1hOL6Ixy5jPyDAc9NO\nvTIWWMc6SpdSQCJMdn6tMKt34rpskHmnPg3qBduM5Dm4rjPcnB1wdEdlr5zj\n2sz3+erThchYA18ptdN32sKO5b8nGbQeKuMZJjV/juGt6xnUi9pDReQl4Fk+\nCG3gA6GA0Lr2mrXo6/0nhftLRoJx0heQrlYlowL7Z4YL3Un1EJ/Vwo3iKhY1\nhA3IA3650OtqKU88emUKqI8w6EZcWnSa1zWA70lIhWuidT5DGujqvUB+HJlv\njdEPBQ8dAEmYeN5jW8cmOgPrsd9evMtzSfC20Wz5H9ZlkeXs1AWXDF5cl0sQ\nTMIYV80yHDOhvxfKYxFaeLUnptUgmY+WWochQozXG+NHmqK02GctoJc5kS1+\ndpyxS9wmCwyoePCYQlm+irRiColqiM3V9IW3wEwDXAaux2zTRnJDt6EVt7jA\nS085\r\n=9U+H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICBQxStsrrE46CIGKqnotAJj4LhFbJCTcB+/zUxX6xQNAiEAzyjv5/tBBvZzwlVDPZbg8aPrgxfmxhXXY/E+FjjwYv8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.147_1604816573865_0.5123323940989517"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.147\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.148":{"name":"@leanup/cli","version":"1.1.0-rc.148","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.3.0","postcss":"^8.1.6","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.148","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gCH243b6eU8Ka9HZhyvRjiLbbRehYy1JN4tDrS8rVTMP3nUNAW+oXk3E7R7sQo3t0KGZaZMdAp/psnFn057Mag==","shasum":"2e83342d99930bb5b9b0ddacfa01bff0396ff13e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.148.tgz","fileCount":51,"unpackedSize":384230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqHwKCRA9TVsSAnZWagAAajcP/indAEXf1yv4UtWwpfMn\nuOCNA5qYQTA4gxKoK4YI+HjYUz4kzKeCtRhWb+1F/mJ9iHF/agR0/86UolZc\nZCAvRPo7/oKkFZqhROWTPQnx7wko2KZQB3JClY5GMV4OPwJyXgqjfe1Hjeeu\nNH+8yH9prJocuAKdH/jlhwrLMDIzXl+nKLkmBz32xGQZP/8APovk+6aoG8fl\nnN5sgXXXivqsWILhpTBMc+jNE6H9ykXCfSqc/bwSynd1kgfCNuFLXnvHivCg\nuQKcnLu6QUEfltX8fOSjFnFsB+Igy1ZvVvmaJ30H7Uszh3h3sGndZLLDdief\npM6YSbC/WuMHxVebZl0dcNkUgu3BCr1MOGmr7yNX1gfmte4WrY1P7BI05YPC\ncf/HrYi185r8PU/ntrLoY8LF42miW27RB7d3IkxUVfAuC967rZ92Z/FLkfbR\nPE2vcY5gJo8eM5cgM87g+Dwf2COwODObSFTWfiyUGQcvLcSgwcGTtFK6MECg\nmy2aPU6HA7Y7Cib+7CqPbYlcwPbRBw8MZRs/UxMLUcsafXUSfptZnckqxKrX\nuuXatRPcDg3WVPtW1ahQwtaNMcRS0uEXxaDft5Nzfq39ngtzUAywib7FTOAB\nw9B99+KPN1kf4M7x9mQjUJfp9+xzcOhRC1KsPnA86CP0QES6q8rO8PyiF7+t\nDl+5\r\n=TXPc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOHbn+rU4BNGXbLRr5EfPi7dr7FjpW/ZaZ+6fGIMmcgAiEA9LBnKL7ZYl/mUs+5aBCOmpAhkvdQZdzd6mjyn5YOdmY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.148_1604877322415_0.062409247984778426"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.148\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.149":{"name":"@leanup/cli","version":"1.1.0-rc.149","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.3.0","postcss":"^8.1.6","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.149","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bqGzyVoogsquRkrOUPMPivCA5bpnadGHn392Ujcum7sh1u4oGrt7KOwyz0HACto9LPdJNjlWvvMzejmn87OG3A==","shasum":"3ab05428c9fda6ed9e13bfd03f28542b8f2e9dc9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.149.tgz","fileCount":51,"unpackedSize":384267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqIETCRA9TVsSAnZWagAAX5cP/09nM3dbNcloydGv+zNR\nAaKRigmGEtIS3Mc+F5JacSVqmuxD9u/6D64x7w/t8b+CF3LaiL+s6pjnNfZc\n6Yfh45IWmhL+e9zFyKAUmgms/iW68OjYF9drilW3zbghFapr4CeX7nhqFdxT\nUiZy069copVbzCkaF00E1Fxjz9yTjWrqsMcFMt3qhSgVGQSD2r0BAJyqd+EB\nysucFWvp8fOe/XBo9pARFkbNvCe4YQy4RdYJZfKRuPKQOTDCoRET7rGUuSaE\n4z7rYC/7wpFoLLmYlGo1RJ16556WgTS0JOXtR97Wfq79/uYecTLgLNrJNRM7\n3wT33tyWEwLcG1M0ZzkvP3s5k3wARYKBCFruzVqDUt5qFyMKeIdyU4ROqIGG\nJ8k5BMWDZN2cGpwz0EbI1PaVmOw29cc93BTixoBKKeTedmbaq806Py3p86cE\nc89mhQRyzUAFdT61aMO0W1jwS7BHxVhl06e9+RlDJvwH2SDe2YmbMT0qITch\ni1HZ3oAEN5VsY5ClOe8qL6gbHQDBbDOjlB3/ZofUasqv179PgARgJI0Q81lN\nBt9/nM2AwxBqyKnI53Y9pa2atQ1+EVnzEkCquvJXAWASTpj4r7m/LACir4Lg\nisRw5XEzWYCNll/+WE4vVtjzRmLSqvNhX6oVT+gsM55XIXS//D9oQaey90xy\nmxhU\r\n=lEyU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIk2P9VYaousKeOGk34KUxV0a2Ihw+8DrFDcrUzd6BbwIhAKS/a/HF3jKwHpFqlxAn1tHWzufPK0ApVIVjj9vEf05s"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.149_1604878611221_0.18430910457328986"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.149\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.150":{"name":"@leanup/cli","version":"1.1.0-rc.150","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.3.0","postcss":"^8.1.6","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.6","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.150","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-G8FqGYeufQrWRf9f3hiimVUzs3s3MoGzkOga5FrUirk775JJOiICgHG0vQKX2LOMnm0n6FbAKbWEb24iE/6CLg==","shasum":"81b7af160fdbff87a7f65383df160e608965f67c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.150.tgz","fileCount":51,"unpackedSize":383916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqZ5/CRA9TVsSAnZWagAAZEEQAJ90CtYfjt7jzmL5rv1n\nNhO0naP68Fefeni0+8zmz9evMFe/XFonKem4MSUL1j7NG6MQIu5N0WyOHCqe\nE1tMHAhKLDbFodvnMwQxaYZjALx5r/Kjl0SVJuL6AvwwsSjQ2k2kysKxiMzR\nrdfCb4Y9xWipfwWRFf6v7qWA1f0qXeRlidrJ1nTmd14K6O/v2jhMZYzrV6Id\nlRiZSzFgRVWAdIXIAbTValYdiWzEyaY4Q6V0QANuncgWagth9EjJMSo9qUnL\n2lQRD1eP0zw47XTqa7XBwSX9t/pytpVCR+pwt1kxxYpXprYhUk8OkOwMVnht\nOsz5JD7H09RjjWxHutWGL895SNie4+QI+C9JI6cvOBDtA0crpseM9E9WP8Gp\nZoYrZ5Kr6WW+iw7GOtjnD25GvMOooGrNVqM+ZwboyPc7KN/XxWuvuOlBukJ6\nQ4+MTGaBkQusPN+pUebUKQgktCJtYKtYVVx/XEHPC1rHRra8dwJPjwi3aCx7\nAfn00B51XgWjOVbdt+vAk5xacDhnAQbTy5LJ7EBAgzsT8ZTgiEvH+du/CcgF\nuYxY6ycvD/LjQ1QyRv2iCS8NFP4dVXigfVKFxhUgn/naqPH5dnjnfNUJzTU7\nZt+0qFBl/Tw0651SsvGUXDkLgf0QRk0mYRrtTjQm9jxYtsU+FXx0k7glmyV0\niVxz\r\n=vXO7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBDBS4Hc6NC+eH4Ntzs1YRUZ3/vpsEdxHUucdglZEw5CAiEAwK8gIQKJLBwcY29Oxd0SYWrJ+pNH5uNLhFN6FHqhlcM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.150_1604951678486_0.5930382459403092"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.150\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.151":{"name":"@leanup/cli","version":"1.1.0-rc.151","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.1","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.3.0","postcss":"^8.1.6","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.151","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Z/iT0lNuGy9kOshQMv7k4/83Z8+FXKoGZmlN2cHid+gsF59T0SnYO7hNwkD006PwfKPEk5WAgSaHbGTqoyMqNQ==","shasum":"8e3a5f89a5fa36ba21a316abcffb65b1aeca05bb","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.151.tgz","fileCount":51,"unpackedSize":383916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqgT/CRA9TVsSAnZWagAAOMIP/i4sv3KrAzQfLaBBQFHa\nJFE235pmkHBlA3/j/1ueY6ZYVR5BJ4i9KUROzh0NUiurTsAiDCxIk+y61GO7\napQQjbZ7cqOmJRwrc0GKB/ROy5r+l2ESg/P1G8NipM0cILNSXYfMJ/2VjUUn\nZO3MwfUTKZz/+23Cf/KNQrxZPMm/67n5P2UR/q7EZCzRl/G/sOd4BIGSN9E2\ndeQm0OK7yczwexqfUP6+wFFhPocrAPn5uvxdMEO/vuNM3iMRhqbCfPQm5Jso\nloVrjOf+Sin49jt+bIH0R60ZIDuhKYoREQe7B18kFSrJPwoNVV4ABCbu+OMS\nV6L/xv4la87pY+d/4V3JfWP9o2UgdWEpc3LWaBcA7Ahp8fl5GDlfQQwIyc0s\nlD12RK+fm4MO/Tsp2+Q2srSTpezy0bKkSAi6xv8Q2zcPCPLXalSTW9pAhVly\n5Y7yer91iug7KctvPL0pibCKS5HqJLvAsjk9qvF8vKjOkhLHkmiOpNmSw5ZS\nDqc+mPaKbXFxf2G7jZMeTK1mNdZQPUdwExako7D/BielD0hids7Rb+tNY88A\nCgVyycOM9G25TTt0hB25N3OUDzQxVb7LCsmtl1DmZbDfhPobzKXjcmZMlrua\nwyrWxcERwXpC2CBYwh+sbNf1w4GVgdKxmLVjYDX/XEhzCbGF45ffJ/9iFRBY\n6ZzE\r\n=95kb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFwbM6SOGes4inB7aFXGViY4AVt1AMThDWHILNAivf9wAiEAvE/+ZoViOyILQDDZqjsXL21cYatQ1ERitnTbAbGSqXU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.151_1604977918617_0.3660205127642133"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.151\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.44":{"name":"@leanup/cli","version":"1.0.44","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.39","@leanup/cli-core-format":"^1.0.39","@leanup/cli-core-lint":"^1.0.44","@leanup/cli-core-test":"^1.0.41","autoprefixer":"^9.8.5","babel-loader":"^8.1.0","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.44","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OaOEKIbvGC5bSqklouCxgjoh5ZbuKpJDZOqwAWx2l72u6LNgzMvOYKT54yvdOiaRRvK6oiLmvWOnISSYAGkRlg==","shasum":"049a31b55d3fbed8600ba0343b494c7899c2a799","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.44.tgz","fileCount":51,"unpackedSize":381090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqgUhCRA9TVsSAnZWagAA7MQP/R7LyJphxkiuvugAkNK8\ni64pxBAxqnp5W/pAJvBVJUqw1y+98VWs5lIrNCHk4o8292IHsFPuwXPrFJmg\nZ8VMH3AJ4JjB+qNhYrWzr2F9Q54w7pu4as7QqIRA5ZsR9em/j0DMBcyA7n4Y\nRn3q8ly5zK8J9YVceEcvEcpjrNrAcuSCuaUAVuKSMf/Dw1vffX9qtdm1WA9h\nBjAS71HIzyno/oFvQiT3/6e9E38REp+0JHSDXVCwrrBOOuPqfHhpYNbWsIHd\nomAL6z2/bqRVWDcYcwDeey+MXlT1nrEwQ7FqPRVP5qUcwYU9b0e3AU7gJ4Ku\nT0ExRQB+I5ssG/jKGu1goLPITmmRQzCmv9r4v7uKLpnuFfiwcmrS6y3NrmX0\nXJcE34GrVs4BkxrzQpoFNW3SFb3gUkRhJny2hE/Vr/gz1AfKQh/ElW6Fh43k\n5rEJAJ9a2F3Sik71oum9yt7UaRHu3XYAszdy+GQWIpGbEs3NpjnmEXR7JiQg\nTj7nxle7aQJCzDv6Dkss8ozJ84i+kLt+sgASG0TMg0o4xONEQ8ScOpURb4UH\nhiZWu+PJu5VYu8nYBk50TDWe9VYyCilcpqB5L8mEHHYGulkOiWDtgmA7Ua60\n+lBhcmuHjcndGPcmfvhaonybLINv7z9uNd66zgNuEw3Wa1QhqgQ5fU6Td3rt\nYK82\r\n=NCB2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEkyA4FXZ74SxmQW3huugfEZJxNqb2jUD2zYDI+7lqzOAiEA45QM5dYalODDUH/vApyJRKtnVwwizkRxBpnr4HJT204="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.44_1604977952977_0.7348590501796317"},"_hasShrinkwrap":false},"1.1.0-rc.152":{"name":"@leanup/cli","version":"1.1.0-rc.152","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.0.2","mini-css-extract-plugin":"^1.3.0","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.0.5","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dm/@leanup/cli\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.152","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lLQxOusgtflxnzLhg7VIgCBzyA+kpK5aRuWSm/iOkPLVLzxkqoFRwLyaaYuey7rv3Zhyo+ldVsxdpMRDuOxVcQ==","shasum":"f1a3aeadfe6c6079c4ce968c03595a470b4f125a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.152.tgz","fileCount":51,"unpackedSize":383916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq3skCRA9TVsSAnZWagAAJ4QP/RqF3lQVwMFUPHOKdPUw\ntHkxc6oxqoxmVSjmA/6bi1gIlf49qV3rqZgneFOfrHKg8kxKOhwkjKO/AAF0\nn7aMvCNqyy2WdnOJ1ftoBvLKX98Y5jemRuBmYvRY8OHomwictDiGXvUgi0yR\nh9ZhdypL8B692xttfHG1WnGmgffFraEDSlSjUWvrpSS0JYR/gU2Gi5ySHLXO\nE3Rdxj+q76Q50Ru1qZdwCL6atqdeD7hs8Q0JMbOvwJkI7PfMn6A7FIDG1Rpo\nigsQYuRP//WLgIBtVjqVIxWVe+nwWT3uhDLk3uKu4+QjayKSLGJu7FUtzw76\nsvhW042kzOPjp9IliLNdIBtPhEfNW9sewDUZo4WaQkVB0yVPTmdUdl8DsGoA\nzxSfRMFtI93xPo+A57WQBpBTH5Fdt6KuHob/Zz8oAyMU1ipGZtwzCFpDtW8F\nO6H+9LXl4I8jthrJ2lI9GBf7H3qUipp78wHvivbdQmamgs4Y/rP1LEAPW9IV\nkbiXKU2ysTrKRR8A2zheP0SPoHhea+QirmdW/nooCCEHoQZWReoWosSdLM+e\nBr+/hNzlwa0PJnAG8ujqz+XMgVSYmyButOLOiD5Fc8H4uGCfxvl2HlQ65cSJ\nxS+Ja4xcH6ClP+CWIFSy3sruaPfp63Tn14guzHDMVQLFIjwe1fMuP7s4TPq5\njV6z\r\n=n9Ac\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBiJa9buzXJV+1bwSUZANTQIm6xxBwv8R57HW1qDN8iSAiEAkfi5BzLivSIAMA2rjTwDkY4BHbJci32itbgkxSVMSc0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.152_1605073700213_0.38774728674958103"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.152\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.45":{"name":"@leanup/cli","version":"1.0.45","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.39","@leanup/cli-core-format":"^1.0.39","@leanup/cli-core-lint":"^1.0.45","@leanup/cli-core-test":"^1.0.45","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.0","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.45","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-g4a/IDgWjKfuoh8aQTyxMJ6/RYoaaYFZk60fi/pB0FV4wgD1Wnun5qXKQxmCn3V4ms/5n+7cxHksPjE9LxdosA==","shasum":"c6da2d82d33132d8c3577ad91033852152d43cd9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.45.tgz","fileCount":51,"unpackedSize":381090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrR0JCRA9TVsSAnZWagAAF2QP/0cVA7cCRfb/kGSNAD0S\nIjwYMFga83sKHPfH+C0EyXIhjqQsnvtaVKYR7BZb2hz/rSFAoFoeavbCTt8t\noLPRM1ChZZFWV6C4LQACevL6lJTIUtXFUGRHEXdjV6QC088HfU3kIp8+iwfC\nTZ7/FKNSUgqRWzRXxWLZzSD5K4cR9LjJj9fKcop7R4v9xQ1kPbrrxcsdTEcJ\niofc0MTbWRqA6wWNkK4nsqFJVQlx5kOEx+eWuSugVl7q0+IxevC3aoNztliy\nZRVw3rrKS3GUVo1CJN7a02EKXPhRM8hQ3WBhVKuS06rS4Ofy+qBX6GIfa9v4\nahMwfJeDZ7aNByhG9hiNEorFzVEdPpjMFk/wEwks6sMa7vhu8KXgUFSW85Gl\nHZwyruacL4Hi2DtZHEEbhr7v07NFirP3qaQtlXXTBeiDHsZll9v38460r+99\nlhSkIui6HAbE0yJ3i3hAEOvvCHizoguzsErOj0EQWgcrZ/JuAeS0Ddm9yGP7\n3mOjShrvMdx4LHlr7SllGATGwAGK64A93SsTMsxpdemA9yVByG6V7PMfQ+6p\n3TkSdvpnCpMCCvrT4b5vpij/U3BFCnuT/cEHMNXV1Vu/yO7WXlcFDHqffNg2\n7zuxjAY6cp6efyERt+GshOP+gMuJhCrlpqDMbzOOfChktBWMPSa63FTVpqk3\nBznq\r\n=xcm/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDW9xbA4IzEDmT/biNPXQX+SswtyiPslz4CY3jz8gwRowIgRNODT0cFT0Bu1Szv0gwwFXjjQermmKlzpTCm1IQceT8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.45_1605180680792_0.8032790110278534"},"_hasShrinkwrap":false},"1.1.0-rc.153":{"name":"@leanup/cli","version":"1.1.0-rc.153","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.153","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AZBmGS4STX+LxzRu2kpY8dCzV6qaS58IB9C0IvZdhZm9ViaRsxHRyXjvF2Z8VfuaeuWsKeYgyAWFAbJR1rOO8A==","shasum":"6b247b5bba65ed56da79e16dc2e7ce10bb526a69","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.153.tgz","fileCount":51,"unpackedSize":383920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsJ8GCRA9TVsSAnZWagAA01sP/iW6NJvo99Ove69qyoBF\nvVOD3iQOwjtFomms7DPFNktGFDak/+wfVrGeoMz/EH/6w3wE/wYjCh2c7XXI\nVEvvaogmKAf8EQgRco7oWoDyNbCIRzM9DVArU/zO9c86lHPtzT6biqTfJP8D\ns5m/txEV3iN6EEPJsgZotSFvbcWuaCZSZxeIQwxibUJMh4XVGddceiI+QdSP\nPqt1CUNzaX0S9sy6PHR6ts/cEqH60DT/8mSFotMpr6BVgh0pbCk9+CPoofIj\nwOMUyxknRUUViDXZXP9AYBcgJgw6oEt1VVdZxbJjPmGWpq6NFURzHrEi2/4x\ntFgEzDPGWEYVHqp0zfNgHFu3yK4vrrCMzy6q9XYSfoLFbk8X3f2LL8Wj4qgB\n7tZQ0JJaY+gIpwyfLblLesH4iGI1yWMUaYNnrN1tZyjDqxRmAOD+sf2Iocp0\nKCa7I1w56nSr+CF/4RdQpQnG0AsBVCLab0J6MjJnRJ8mhSXPUUV1oM59fb5+\nAFADGCrcbUwf+e1DLUmaq44kVB5Ch+rFoxaTOhyXYqdY45BeW06iJwv0dU7+\ntdFTFF84JNItPsEiT6DXLk4ukXpmDfyYJ7luT1XZHn3kEu5sCwa2Z3h/ztk0\nMJmSh6e4ccfFb1aXiVZ7tOGVbKvgaszRSoQX74Fz8icDZRbZCQ7z37/JLe0r\nGePM\r\n=St4F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICu+fW2ZsWYeHNHDcttIMeX0eUP/gX3PRIIRX9z00wyoAiEAkvN9WWWGciTijC0ogJbQqoTcejM+/DHdBmQVdl90eho="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.153_1605410565436_0.3246519296144479"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.153\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.46":{"name":"@leanup/cli","version":"1.0.46","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.46","@leanup/cli-core-format":"^1.0.46","@leanup/cli-core-lint":"^1.0.46","@leanup/cli-core-test":"^1.0.46","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^0.11.3","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.46","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qITuyRycHinp0D2XVfjSAWoMX3k2M3UMUY6bM1jNEyDYejP6xy5uWBtPnD2dX9SEAYcKBNTi30DEqbBi/cKkUA==","shasum":"03bbf8ad39ae4fc3b18d95272fe62b46080fd7ee","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.46.tgz","fileCount":51,"unpackedSize":381094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsK9NCRA9TVsSAnZWagAApEEP/ApMQuE/D1W3C0WIQu83\nepH2iy++1vtYDNA7pSSuoFAgTJYC3Q0vby458fA7f0+zH7EkP5qf2ruqh0Ng\nC1wcxb2WuemcID5qhleHm0aNJtRBBZ9p7caIWY9x1MV4RL3TUhFmukWg8Kgu\nVUDdtIovOTn+PEqqXun2fio+zAnnbqIVO4XR1b7+B9wvWps7wn8jgaRqwVT9\n/kuG0/dXtIk/9IBZS+2xsYgM0SvZXqKymMKGq3vJ3BSriuBYDXvSQmqvCdaf\nIPAQRqjXjYXu/utZ6gPQK7vLAhEVPruxoCLIG88DUnP/YEMeuRMzRE6I/RD3\n9G43rHcuAz9h1KOI7sq9sHYKDrt2eIvTmaObA/BSosbbkz3tV8nAMzGeet88\n22rqZ2I8fxnTlxGqwpM91MEvPJfuejqsHmlSDhO4t+zLxnYEvoTW8guQS/Qf\n1yfhqlkOlcgcWjgO0kcbUzWP6OZa3jBatPvFw6pYk/8hilJ3rUAG9uQKrGyQ\nL/7n0GjJFbCAv0FfgbA6Fp5TM4/T9Zm+/Lgm2yxpurEUzBPGbKUn3XNtv9Qe\nZjb8Jq8VybVLCYIOjuM0cYXqz744Ru+VPDPftRSYzXrFuPPJEeWyDQio+029\nC4WNI180q09Yn8WCpxWh2Yboher04BStV54fI7zeh5db8J7Pdd6R6aQH4ILL\nvNNF\r\n=0zkQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDM40758xDl1FdEGDCwUdP+HKAmeYuZWkWDMivmHBtxPAiBCNs4jJD8XEh9pFvMvMKIAjMwvZwSWta5r4diQMk30Zw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.46_1605414733295_0.8346629749782737"},"_hasShrinkwrap":false},"1.1.0-rc.154":{"name":"@leanup/cli","version":"1.1.0-rc.154","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-webpack.15","@leanup/cli-core-format":"^1.1.0-webpack.15","@leanup/cli-core-lint":"^1.1.0-webpack.15","@leanup/cli-core-test":"^1.1.0-webpack.15","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.154","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-G6jxEpQlfboOK6gz7E9oUbfsWhZWNbVXaVPYci12Mp9aqexASkx6eS6jpGONbwtnSpY0GQ6f5wtxYzkOZ8zFwQ==","shasum":"c713a5b5fd10e7e3fcf8d2a296236ec2aac4ca2e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.154.tgz","fileCount":51,"unpackedSize":383920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsa7eCRA9TVsSAnZWagAA+lQP/0I6pLW87Cs4oxhZy0pO\n5qRvZ5xTKP1fiN5FIuS7pqjswWO/oR8VB+wd+Tu4tPBGR+N7eWgZA577fBlI\nU1W3MJJ9Hgc6Tn3zNqqs0yLUn7tCpDBwNJtg4tCCKiCg1dVG/Qr6VorCdVux\nyo1of3Uc0Bca/bF8NBuZ5ckZNRk+eNR6vM5a8QJ7lURrWlHOTuL81tHBI8Xt\nP+N/x4S5SbRtqh3EUj1sb+omDM6+8iC4eZcHY8ac5RVgCC97Fgh+cx0Ayp+2\numohYMi1RMuWhApwMhjG+sIMBIoE5rPiCnCbbeYuNSSLcS5weH7S9EgszDyi\nY/zaQvJrTDPMhic+t58zhhJk7loaG25sfrcg9Zw4UTPhjhuUtc8X6YVBjqz/\n+TR8F0C6jmuZ2M+lD6Wvofif9dk8a/Mwt4UzxguP+PhTTZR3olPNbe34SPoy\nIeKKA/AyF+PwWcYyKyIRiu6C9wE7BadapN5inNgWv8tMqL4A1iW5bcYHUpP5\nUygPfNb094H5Egm+k63tP7gTmQO5MeU/3jVz6eicP3aMmvJ2heGGPlmc+s3/\noBQjCdxPb6xY4KwYVNDO5k3SaX7T71EiMF67ouBTt+KeUWDgf5WLq3nVhFNI\nhNowitW24YAdHnWyvu6WuiS12K2x+AePlXYco90K3eSJxqLTCwNjJLmu0oY+\nkC6f\r\n=Kwef\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHR6cKDuzrhVQCGuU38YSN8vFDpq9dv5lO4otQGoBxpiAiEA+Z8GHWYH1Cu6M0wNfi+WqKWy6ghRRq9WGaWqctZ4Xko="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.154_1605480157147_0.19348439999705658"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.154\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.155":{"name":"@leanup/cli","version":"1.1.0-rc.155","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"next","@leanup/cli-core-format":"next","@leanup/cli-core-lint":"next","@leanup/cli-core-test":"next","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.155","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-zIT5gAOjYzCbOj2VCiwtkPexfkJV86hOlEkuGTTbaRDaqTl+4ChaHk13c4IyJrXIrZfFD7WzrxUvByfjwzgbUw==","shasum":"db309002ecd2c961cb44034a704579b414e3cf0c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.155.tgz","fileCount":51,"unpackedSize":383868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsb3TCRA9TVsSAnZWagAAW9cQAKNXsx0xVygHKN/ew/6p\nOWBAFvTtPexTXCtl1XRtFeayV+2tZdZkzAvHCujFcau8fchciY4ewtLUoYel\ns9+DZoVlH5KEKcaT9N3mIktAdu45CahJ9cwAuzydqUcac/RH6bzXN7YogqNd\n+9Nvu7I8vfy19zUIFjYzy8rMzyXelr4apSkO3oprBDcdP4YUClqiIQzlWxSr\nzGCtzZfmy0iCAdQUFvhshbwPaW9KtolXq5MWtTIFy5xC1VwCPjUiSz8hEjRn\nvjbaTAkLudaLCHp/BTHnnNV+ZOtVPl7+4qdOtVgZcifWrT0taYjjc62uenNn\ny/Dtjs+e5EWuv/DzaMcFhRXhGgdI+EezMBxBASbSzNrqXHv2LD+WzAHF31VL\n0XPiadpCR0KidY24iG9y0tlp7N01X8nO/Yln9Gt/67bm/J8De+hRhVbVyZ+A\nY0KWjrQgQcxTae+SiotmJvNpmpPIYgNo2NoO+ls7dr0labweMfRBuHtvoD3c\nJFVBiZXHWEtRrWLcqYMMOw0Rs6MfScTdqfPGRgWUZ4xHXqV5z7G8u6lBekyF\nKz4lTBRO/F8KrBAadF4bl6KxTSDkO/uYoc14LFv0c4/HnsHlpPNVY+UHVvAI\n0ZJcjuuBL41vmQ10pj7EdWpPU6CwHkfons+5h7Bbq3j+lN0ZdSr0nw71fdcq\n2PiS\r\n=t1hm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCzPXNqFovIZSNOEHXVmlO/9Pr/3UXIu687CPNb5AN0AIhAIGuNPh4lXL7CZRO3wfewkNGPskkmQUrGgDJhgWzNsZo"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.155_1605483986726_0.039588791629886044"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.155\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.156":{"name":"@leanup/cli","version":"1.1.0-rc.156","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.156","@leanup/cli-core-format":"^1.1.0-rc.156","@leanup/cli-core-lint":"^1.1.0-rc.156","@leanup/cli-core-test":"^1.1.0-rc.156","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.156","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qgF02HL1h6Mic1+j0Y196LouaS+hnenOqRDKolxqlJaFS8Lz027YfiYuu3rUgpIohWN/YSIEPQp+XSIBNcbTVA==","shasum":"4ffd8bb10dfe7f3c648f7e1669d76b42b6e25418","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.156.tgz","fileCount":51,"unpackedSize":383904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsdGjCRA9TVsSAnZWagAA22IP+QDtOOcQmdm9OOJSUanT\nCEvd/4EWvH10r9q1pJET6CIoQwTcv5+VXkpVraSRgx0TjRjJQx75OJhFHjEK\nWse51zWN5aID1GHFKh6JnT6SqBqxNjGxsBMtMWjLzn7lrJwDAlFN8Wpas84L\nBSFt5VQUC0AsEpbkNRuhohVxNUIYeuWujpHDM/iR/QxS2AApcCTODp3pyZIl\nGxb75vX8Cci51PxL2KZRQx8s3hCdc/5339rdmZrUHT4dyfPCXIf8cbs9196j\nlj5/spDA3BwYeRiyaD0OkZNNz6k6rpZaYhKoYO+fUlN69bB63X7X5HzqoXZD\nu6QNlRFl7lpG673RWXECRd5ek6nfoUUA9CafE8p5q/5OWDdGa34GnNN8GJTs\nj8cNztcb4DjEYZXK0TVvQfPccgL4aFOaHjX3KLufii5NeQ/by5jef41t9ek4\nBZjLsTnAntHbvjVvXWjYfiqOumenIMhA0moeQtiPqcXLhs6fCPxw3Q7Uemg3\nMnSC6uZn7Dl/AoztsOqrhPRyhlHFtPRYoeOJumejBuwxyUODspJHhBr+VY4S\n8pHvEaA2pyRAhf14hMpg6Fh0G5VYCl/S9Ifub78c4eX7ROoj+nFZ1JXk5yHF\n8SEL0k5ANctjhVFd7U1yj4mGWqBfg+GBfaOuzayQa+SYqrGVJVXEF0rNx0QJ\nlHdP\r\n=tFql\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4YmPttx/xVt14ybvBRviDC+NsGXCI5bky2+NuGuQW2wIgSA5BUcQ3ruvnjYahryO84vNotvbd7rGyF8lziXIuAGY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.156_1605489058524_0.9046336140791325"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.156\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.157":{"name":"@leanup/cli","version":"1.1.0-rc.157","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.157","@leanup/cli-core-format":"^1.1.0-rc.157","@leanup/cli-core-lint":"^1.1.0-rc.157","@leanup/cli-core-test":"^1.1.0-rc.157","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.157","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xizzWToGB+FZF9FyLKA0imiv9n1E1JxawfOMwKajda4Y9kcEq38pskv/IJTK2hqdS0MaauuooYeXzI6AUThrLQ==","shasum":"514e56345d9628911e7828496e80cd230b0119d2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.157.tgz","fileCount":51,"unpackedSize":381881,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfseOeCRA9TVsSAnZWagAARI8P/3QXTS6dRChjSC6GjQHF\nl2UFJ/GMSujr1EGLF7TSNhc110TFiX0lFSpODd1aS/2STXuuuMVKj3xJs2Qi\njTIi5oq5h2nnZVKFKzSfN4Hkt8JmQtTvywDplg8VtAezBOe+eQcVaOjr2blL\nX7/3CKTxjvxeGoXg4Y1vT9rGrb33+V2rMhtPblzopp2aRSRaGOEZGhiZhJW+\nR0iTcQf1gUz7JZk8tA5ICAj8RPq9WUWbzDb1anJtgXfIz487y1B6OPaiWS3a\n6xo4BC0Kqc4GC/si855yp7x3GDvv8MKuI068ad+rtW/EthJ0CltFw8EVoSMH\n62qUozTtR5BVPbVFkiL4jFTIN95b9tth+hV4VCBzwoCx3U8RK7/3vV4jL9p7\nt7LkZO5OTRBgmsiVNm8L8NEBlJgOKLIgJUqTH8rNZ+H9QD98y9Tzt8GmgQZT\n47e8Iy8IKocRnaqaBqZ3P6z04n/GiH5nUSHgfIzbf/unEXPPw3QZvC2ozhmA\nF4ZG2UZj3aAwgRBWvf67PE1K+Z71Pl9fgQ2gXdq6kZnTsG1DRlijIweBU+VK\nANfxWq/WrilD8kaSVptFkNWV07JVT878PLd6UgqTT6FkdIb2+/cQIZbh2SCC\nemOu1Q2pGXldoCZGfsXg88FJ879fySe2Zqb/SSjzTSoDDPp6AXURnfyQEiy/\n6x54\r\n=ZYgA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDcnFpAln+iGqCyVOQT4TFhwA6tgCZbwxVlh/Uqb7QtTAiEAnsYAJjFsMoF1dtzCdeWA6Ovbd+j23QHJ9HXO0chHN0k="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.157_1605493662402_0.1092407985092505"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.157\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.159":{"name":"@leanup/cli","version":"1.1.0-rc.159","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.159","@leanup/cli-core-format":"^1.1.0-rc.159","@leanup/cli-core-lint":"^1.1.0-rc.159","@leanup/cli-core-test":"^1.1.0-rc.159","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","html-webpack-plugin":"~5.0.0-alpha","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.159","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-f2XcPeAi95uIW6roBZc6+jbnyfeZcfyI5FR2vqYr3/2NqCS+dImWXrS0rKU+0LB54iBU9LgM1b4+sfyKRoBhAg==","shasum":"879bffba7aa78a6f58936db96d07fa359534b1b4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.159.tgz","fileCount":51,"unpackedSize":381887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsm/XCRA9TVsSAnZWagAAMTcQAIpV+6a64lAvg6rlkvdN\njmRxN3osM4ooSs1sYOXkkdt3AAUkgNCOmSGNCW7ImDNpAWe7xk4fQY4ZNuWV\n51pp1RxtKghxi6JxlCcTicrLjTh740j4hwRfiTzhJ7tvvRIDvbyStZ/FTLw4\n4eXuj5h0x6J3Tzsp3IOkA7FUD2heFyWKHEsU1pwhc2XVQe7OsqTJZ2Kb4NVZ\nB5tj3XTg6V/hUtLCX6eoFQWveYa5rjitEg1WojO6QmIr9vi+Ol13etbZQx08\nNndWUz5msp23lZ8x5RdkB3hLtuJzFBYOKnVmeDHnEIu7UQb7E5GkiTCu478p\n5Uf8X1sxMOae++YxTHb+LG5+6NSFemGdiffgLl3zC8VaAT+FBW/gUaCs2VM9\njj1ippAj6BkT3vKYf7jH4DaVJFoKOwMgsVYrKS2sz1bOnhbsvF/jptBsFMd+\nNQUpHcpWeZ2EkdIZnL6qVNd5+XbvNcb8vRJXpOcne+c3EwgslMc5cLj9UCum\nxMGprD9cTFGNDqjD815vxEhEgGjUVj5pm/NYTv+Ocaiz8Gbv1sPxjEGAE0FF\nMos1PjUQWD8QJ8UqP6GQiCpmmS13nfrk37jyesONVdovMEfWcTfF/Aw1bYuq\nmxob7LEmxiK/6NwIBdinIMyD5vNFOWeeShk5Y7j994PwOr+qpvKhJvNq5BDV\nJC0L\r\n=uvc4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAkoPnyJoY9lCNV1WzFhII5sreUXE62Aqjk8Pc4OLTXwIgOenKivfcawaYv27LD57eOatvNV8fmxw2AnSaAmPgD3o="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.159_1605529559352_0.07337777233972309"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.159\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.160":{"name":"@leanup/cli","version":"1.1.0-rc.160","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.159","@leanup/cli-core-format":"^1.1.0-rc.159","@leanup/cli-core-lint":"^1.1.0-rc.159","@leanup/cli-core-test":"^1.1.0-rc.159","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.160","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-32f+PcmT7UFluPehtPXz/lOhKI7Rv+LOqmFbx/4AtC1Hrm8yVYpGZrToZz3S8aY2FFfY6N7nJvgjZJpwQJgKow==","shasum":"ed74492dffc24cafef738c38704663b3c22992bf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.160.tgz","fileCount":51,"unpackedSize":381355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsoTVCRA9TVsSAnZWagAAp54P+gPGgQdEr8CeMFG8Ky8t\n9bQJ9dRL1WplP4BlFY30ngAdR6DLHGH4nY+ACgss+gtMASQDEE2geqY2H3YR\n9+wsIlRFcABzKAdrN8yG+mZfRhKVD4g1/zOPS8r/eGIUJg8IIwCdvMPHPacp\nQWrsmC7hfa35Tu/X0pQVm/7HXuf/an5cUdaEMsTaBiJHNbIy0Ywmy7i4LNyw\nC+OHGMQA0IgiYMofbxegJq6gUumVaWepok9DT5dlE5Gsuc1qfJS6OLtym+Wx\n5XPzJyCiAjFoqxg7EvgxB7wZHe6cJY9Zq/s3kJ1rM+CW/nQh3duc32bobdpw\nJJNxxiekBXLnEx5+85UWLSC9Y0W/vNpVNK8YcNo/bbGblioBaXooeCoo1Ncc\nl0tcDqCTiGqM1i7m0ccIAFBpGAnOqaq0rB8VPowiXQZrotQEPi1pXCO7tzch\n8DKwk34D9YCWSE1/unB5BdARw8C+A16pbQcT4OeKGFx8iDl2ShzQMJHTRS1p\n68zNzsl3MzIm/KdPI8p/Wd8WREAOKithiciZscE8wbOGrB+qzhFzl/zPVNlN\njL2aj3x5lTETclIFI02ur69zqwX3JRp8hLiIaYXN4qmMKlA2N/lBDLsAdq+y\ne+2Me+C06ruTcRec3HHt62pDkyNSDjRy7ednossVE34BBHRmZtMtokiO0px3\nDR0e\r\n=pjSu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmq/pYOj+R56QRU/Wtns1i52qVhO4EY6giUVwfxiOQyQIgEs6vpW3y1sBGcvD5sQba4w6vqI3UkBVgHbrt+jdoPks="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.160_1605534932636_0.7958258705953076"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.160\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.161":{"name":"@leanup/cli","version":"1.1.0-rc.161","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.159","@leanup/cli-core-format":"^1.1.0-rc.159","@leanup/cli-core-lint":"^1.1.0-rc.159","@leanup/cli-core-test":"^1.1.0-rc.159","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.161","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MeZm2MSJlAU8M7G0001X7RQn+VMw2eiCdyFvEJ2JW+UrSR1FEuexsw19uBKm6B+7GSyhXH5l0+tlo3E2JeFG9w==","shasum":"7de195d9d35f2b89899d7f65248945af80082acc","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.161.tgz","fileCount":51,"unpackedSize":381243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsogECRA9TVsSAnZWagAAGqEQAIDzH/LOsps/LP/1rVdF\nmPeUk//XJWHKiox20fM3uSuPn2WO3UFD2ZlE+4tIRIz5DuuARX9eIF7/lqp6\nWdcDPkK1X/aoJq4RDP+0Q/1xV/cpkGUoAf0WhI2BLIHn03UKizJmD4bW9FM5\n/SrrTRp6oy2FJh0wXH5istmMqbsznnPJJ6yrI82Wr6vUWc2ih8SsxGFCYRjl\n+E2BUKYmP2VVmhKYlu4bcd769hT1VtrFDcZsbwKGs/qh9f7t/P+AphlPtaTb\niQX5jSbF1P143Aaj36ZyiXODmsHLOVM24BdALvyFfPtzdchGcrdhygG7NpJN\nwdlIvoi3NR4556HVRYh0/RTso1tcyU638c1eq4L+Caj6PiWDC+fvBGl4bCey\nXhhduD5osW8uhoK+SzMGqrhIGH0kzzy6+3mkEydZDNSUtwNGNoq5fXruuRbo\nGTc/mzPLDEMUQ2LtyPnzd89ynMIqK8x3eBFrDIZqYf/0mEd1J1awSpNeyeqP\nR5jyB1UcwCz374lqi7pQ8oarNSS02Euzn2Yxg+0DJwi2RvkgypGbm3ZslpG6\n4LzGJSb23dPNZGdRzoO+CavMQdLttHHR2vnXw5AAqv47Fnv792b6VJGdIJQs\ntqWO2EhQRYUaJ5Ni+waflB2WRhK3NejGxLBBhImdLO4q3eHYCtxBThJDU5q+\n/Rcj\r\n=kPX+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfmikozEU0UbH/0483LTGBc/fInDbyfZOuwD1a9C9prAIhAJrkIgG9ImTyefdgrsSkoCul2YXgdQ0ITaT+I7t+tpsN"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.161_1605535748432_0.34430464797819726"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.161\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.163":{"name":"@leanup/cli","version":"1.1.0-rc.163","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.163","@leanup/cli-core-format":"^1.1.0-rc.163","@leanup/cli-core-lint":"^1.1.0-rc.163","@leanup/cli-core-test":"^1.1.0-rc.163","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.163","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r0CsOJquEr4oWggjQMGA/6FVtFnlvx3+oGLQ/WaGCP0U6MTOCEqTXFdbC+DE/pnG1BAtlfK0R7xBI4iijhtyEQ==","shasum":"1848e987acac196c2c6c6b3304e2ae4edd21e8ac","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.163.tgz","fileCount":51,"unpackedSize":381243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfstn1CRA9TVsSAnZWagAAJ58P+QBxaAbtnkpKZ1mLX4ox\nfpeC4lH2wIbBP4vhk5X8ZXuXWFHvrxmgoydf4Ki2kTKKjOE7ARAWjRaiyKsB\n0u3Pw4a+3ybOJxQHGQXhp7aqPGYeEa608AI81RW0/4bcNmKFHMpttlh228Mi\nR6woF9HOxbS4w4C7/RSAJ+eZP2xF8eBEn04MCyBP0PVaAOLPYNxUDEIX2Kdb\nCPF97CHvi3KvwQEs5mNFHDl1zVgUcIb7UFrHTAkOoGLQyTMvUCwon/67LzBo\nAy+Q2gEoWVopxjpIyGZjU7LU31CaXkSwBZL/5yYNSAgKzVDSlUd4XItc7d9s\nSa283YA9POL+IEpktUCheXqUQ7SDLSIRuHbHmsQ+6AMd6qN1/SErDahG4sQF\nrv6JZIJzywIq5YmdXbd6cBPX3mkQjxEtt2ClnVTVPSWXuhHHXFy/YRFsadzb\niGxrNp56rIE3YwZAqUjk/eiiSaMK4pakSZvaCibTXZTqUOkpVO3ksoxgRGF2\nTu6qwbhfSnYQk45lyp5pXiV4/AFa9JimqrhWpqGJwu/7kIVJ+JOzN7/Q6CdM\nZ96VEHa2MTbkbkgfV9U7RemoUcw7xY9oBT+akpCKAvUSzU0IDN0oMGz5wu4u\n1z0BIUxq6Seqozoty3mmdZg/kaDyyNNEHsgWo7efdGjNR6xgD944nAOr4o1G\nG7YW\r\n=sOuJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE7PY/CUSGy/0vYezJEKGR58O8eQSs4vCyNwrHL3F+leAiAu2jFELN92rKsv6Vhok2OLPLGG7Xt9Gi3VnKVoJYVyXA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.163_1605556724556_0.29860329392608453"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.163\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.164":{"name":"@leanup/cli","version":"1.1.0-rc.164","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.164","@leanup/cli-core-format":"^1.1.0-rc.164","@leanup/cli-core-lint":"^1.1.0-rc.164","@leanup/cli-core-test":"^1.1.0-rc.164","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","mini-css-extract-plugin":"^1.3.1","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.4.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.7","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                 mini-css-extract-plugin |                                                 [![install size of mini-css-extract-plugin](https://packagephobia.now.sh/badge?p=mini-css-extract-plugin)](https://packagephobia.now.sh/result?p=mini-css-extract-plugin) | [![vulnerabilities of mini-css-extract-plugin](https://snyk.io/test/npm/mini-css-extract-plugin/badge.svg)](https://snyk.io/test/npm/mini-css-extract-plugin)                                                 |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.164","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-B+zEJRTPr5HSjsCJALX6GZwZmD6lzsvT7yqzlf6O50JGE/rOT7O5CgAf4t4XnYcP6tGrWHbr0o1PMbSmh7l0zg==","shasum":"66b004a2d38edf0ab2d79cd5559b455e3f89ed8e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.164.tgz","fileCount":51,"unpackedSize":380366,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfs18iCRA9TVsSAnZWagAAlu8QAI4sgGpSZS4sgHUUB7zP\n/EDCALLuefWzJSUTpfD54pCB7adePjjVZDSrcvzT21tAAWQKrW79ik2u2+d9\nyxa+9yz5QAMNLoPuy2hNja/VJ3qKLK2t4CHjQSUKe+WHp5CciWFHsQE5RZ+P\nB2YfM3p7zOXUppZiqkbKOXrpz+Xy7vI1ANo8hoJG+DYCHLiCZB04ghg4ZmK1\nYpwGnox6ZyzEcWOz5XDGs13ukqjeNwwWYuk/LNqVsZZzTYQqCT9WfYN6lD/6\nR5PykmR2MK8gKESw8I7Zuy/5uSABMwJNZ/us1D0mEMcM1He8WIX2/eOKcGhH\nDhy4oJt2eMkF+ecclNvLvFX/ABAdKuerXI+8RxPPV+YaluO/ZILV+lB8CfrW\nVW3NBGDSrwBK+8v9zZjhi0tCVQtsYb+8pk2QwLanXjNg1K5pBuC/2K4HmgB9\nyCxtFkmik4I0x8+VlEvEbPgUqr0UQ+gzcbuHIrVpKX8OwQX4MrdYvTz9HK6l\nCKEZ5ihiBb6hLhEEQJ2HRIwFmjciyFCGITkLkDQODR9hjulbG8gNOxgZFRUM\n62FjqZG6l4iC/iIbkPrsg7c6/NDFECZsf1JIvtHy8SS95zPpYkfb/CEVorsl\nS/VNevZQqQ0ExZij3HgA6Hgh58HG55Svl8riXkgT61vgtrX8gTOF98zeyNyv\n3vP8\r\n=Y0nN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHFzUT/s7ROEqqC/OIZODp4iBC9/tr7E3tcJbfR4bjptAiEAuCroRj5sUrSlWIcBg7xivqGZpCToLlXFExYyL4oyOM0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.164_1605590818195_0.5158556986458356"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.164\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.47":{"name":"@leanup/cli","version":"1.0.47","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.47","@leanup/cli-core-format":"^1.0.47","@leanup/cli-core-lint":"^1.0.47","@leanup/cli-core-test":"^1.0.47","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.8","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.47","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-n8JxPnUsGF0SK2iqyFD4iiso9w2FnIOfnYynUztJG0WNpCTnR9NXV3yw3CoJfmE2qf3q9fdQrorn3sPuXQQS2A==","shasum":"a7265c86cfe00e2b08782f418189434f609971fe","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.47.tgz","fileCount":51,"unpackedSize":380826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftYqHCRA9TVsSAnZWagAAJ8cQAKKv66GUeGx8LivuiYkT\ndVNCJjsNIb3rHFOAjmXAcAuDIRHSZQUQTmZaauRCH0t1ciRmfebovY5SJWtN\nespOVTZ+SCvJ4Fa/pYS05zCi+7H/h5O9l/twKuCVZvJe04yN/C2gXBQ+1+0l\n71tjqQlmFyj1Oqwu5vIMkoh3yKV2WZgLYbNu3+Rqn1PEkcGRW1rBrTmbAF8b\nydzRJXqX+1q7dRKa+44hBGi+OLsFZl2kXKw65MANmoJjOjXQnEgFFOTqfnaj\nxC1qFTOTmfXYeJdPT3sKQxVJzJZXkBxAjfwJusi8qqHEre84sl1hQ1PI08n7\nvWZvL7Q7pYBjXzgM6EiAQ4SVHT5LcSmL0NXBRpz+wvew0VGMqEubTJ1+Qum+\nMcoptlArYeLUeMYKLm0Cu4yO+VkS2y5TomErvrm07Ki1Fms13t47/geSZcoD\nukbc4ygGZrn4XDELUfC5hX6OVVy9UXfWSNglsz2BaE7dqZDWb8Eh5gd4i0r4\nvmayl4fh5KAdqO+PsQ4khK6c4zSFmSkjXDBXwNZTXV/LyZi5nQSZBK5rxnKt\n9mXWyuZicCPo6cN1TkdX0g113bsD9PROC6tt1hjMQNKy8VKmHU+4XzEWiO6Y\nemUX4CuyIq0vd6V4jQay3xrFi+3PGVaIamlrBBc6I7GPD1B0A26CHr6C3u3A\nh+pl\r\n=OhG0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTXkrBz6Wga45vvart2S+HAquW2YVI8VCPqnT1Akp/iQIhAJjVwURjJ3ajMDwGKntIp23WzaHuTfEt7PKFeuZjWZaH"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.47_1605732998523_0.8899876454098656"},"_hasShrinkwrap":false},"1.1.0-rc.165":{"name":"@leanup/cli","version":"1.1.0-rc.165","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.165","@leanup/cli-core-format":"^1.1.0-rc.165","@leanup/cli-core-lint":"^1.1.0-rc.165","@leanup/cli-core-test":"^1.1.0-rc.165","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.7","postcss-loader":"^4.0.4","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.5.1","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.8","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.165","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xqfsaWqTVtv0obaYNgyDJXDIe/ZcsdrYie5apQOAbo5p5lOzqoe3/RegyAaHyscM4AybFGie19xIsAObSh7kZg==","shasum":"b7cc30b4c71fbefc396d169e6d18e4fd5718da75","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.165.tgz","fileCount":51,"unpackedSize":380071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftYwBCRA9TVsSAnZWagAAr44P/1miUGzQhZVb3ujJ71ZF\n4NC9eMKA7piXLb87jPb9OQ3BxXXcTfrsMNjm76G6MkElA9CYCVCoJ+kS/iO7\ntvmrvYVpWvGD07txJY39rZRHgQBpVh7GBD2NJsgiIoiIOU/x1VyTEVP0tQoM\ns9mDEzvcFT/Kf4ra8Yu9asb9oWhJdhXFz0izmNx3ZcsImcMK5hJSvhd0bA/X\nx+VtPVqhnhQtcfxuJGGI2X/WxeAO3g8mZaNZSWUbfaGPa6YIWRyo+vkJIVGV\nrnnfa39LLIoyqc1swV8diGmDzRMM0gVCpcLZhzj9YGIYd9BDDofN6kjQgh8X\nSeZBZNajZJY0KUEIoGSflgke0BBoESL+CX6BLOSOr5qYY2IiIgBPOYj8xrZd\niTaKGVenUUyeo26W9yycjFEmLzk63GQKpho/LsF1GBN7nbwkuR3SYpQh+3z0\ne2z1w45u59ZRj1hTIdLh9UvdWJZuEO1xelIxkVdlPsvaBNS5CROArXFmTaZl\nXcrTVgiouKzZPG4pDMc/8BtVXcRnHwcAp0t1yMdMQwMRq7mBFSEsRNRyI/VD\nCKvPw+O1uw9frnEQMkMJIKK8ZWSKaUNvv+G88ZE5w3uf3u5BrLDHofByGKMv\n5/DDxu4BU4BPB0yd7JrNCn/IeV/BOVv6KCU8aE+k+Sk/4KLf+1IenGxN/9R5\nwh1M\r\n=cVdO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWR8gCWLrDov6MHdVlLJOBA5eHrTbmbGxCYqS5G4V8TAIgBZOcG3X/urpfOfDFK1wyrHL+gYnVx/9gD0/P9Q1rnTQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.165_1605733376590_0.4600452960632675"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.165\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.166":{"name":"@leanup/cli","version":"1.1.0-rc.166","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.166","@leanup/cli-core-format":"^1.1.0-rc.166","@leanup/cli-core-lint":"^1.1.0-rc.166","@leanup/cli-core-test":"^1.1.0-rc.166","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.8","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.8","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.166","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aHvdE61JtvcC2Nysv8KoJs0PJdQEaG53c3My7FBR9MD8Nddpzu9Hz8esX1JY6nF/t2qU2O4Hb/E28gDSduj0/A==","shasum":"bcc54edf0438cd175c122ff7632c9bfae0722059","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.166.tgz","fileCount":51,"unpackedSize":380071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftsweCRA9TVsSAnZWagAAC6UQAJzRRxNvmaMqwycAQhD0\no1F6CB2tkwz4Qwq7oIvP3niUp+eM1WadTAvJWZt+PsraIIDFtVdvWgOG4gYA\nkSmH6tkZNC6lzgIAYgwaMbEdyOn1gXx5oDidaQp8BGOLupvJwWAoAv4x1tZQ\nmGlZtpzhjh/35QsCTudZaf8GeXDPeiwy5g+k+Xpc8JnVQvYnpZ6WJw/JnqmH\nsTs7x3wSCm3XqXfcvV8KnVvzmerjC1/2yzukjRSkndQDvRwpQ4cnGd4lcnfX\nrjTaZsg63KeXUIPoK857SJPVR1WSlN5zPKV/rtFWJTeZ2ift8y5ANUWgwDXP\nq/6c0dGJBkmY1g/s/0DJJD4TUzH2JdvhAFBnfinDzIu2tt1q+TYxMfQiug5o\nHd2Eccy1PGlRj5KPJ3u50QakLhCrUY0pBzvnrEcsJMQhd/l6wCe5Se57kID7\nxsnpQDjFT/0JRL+T4PBXg5P/A8Km0oaGQQeWFhlW1BX1RW4nE5ira2Dgmmy/\nhn4kalSUM1KAMHif7uVG8B2Mm3jf8WK16FGA54SDG5v7mQJPiTMSzzy37kt6\n01c58GTVtNRBC4QFklyjOGALdmSy1u7VgdrlgqePYJO0Bx3cFueY2roxdQaz\np6qV/p7z2JyASOfItfkslJVxC16PaqFyFBhZHYSo2K9Hmtqg/CTRtTStlN+A\nMlco\r\n=Mcl8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8rdorgf1hbCcSlBffuZwH1xdFPf6KWIr7bYxmeXF6gAIhAKGsMgxmHCdO68izkhKf3N6BifRTs9YuKDWEupANUM9X"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.166_1605815325778_0.5258287348394319"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.166\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.167":{"name":"@leanup/cli","version":"1.1.0-rc.167","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.166","@leanup/cli-core-format":"^1.1.0-rc.166","@leanup/cli-core-lint":"^1.1.0-rc.166","@leanup/cli-core-test":"^1.1.0-rc.167","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.8","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.8","tsc":"^1.20150623.0","typescript":"^4.0.5"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.167","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XNxdhgVgwUqfekBnQlgliBokI6t3GTh1CFfnz0Oza4DW9pyCwxk1siNG2xdC5GIhCvMILco89sVsyuNaXLX5xw==","shasum":"394a66629c73ed99a55481110a9ea19970d2090f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.167.tgz","fileCount":51,"unpackedSize":380071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftuCzCRA9TVsSAnZWagAAFUwP/R9Y/0C9HDQybFejvTNA\nW1fPRkN5VXQxTv8Hxcq1uFknLr0mGP9s4IM4g0uF7DXqDASSEdzj4NQ+Okxd\nnEg5ENo8lwInDO4Iuy3ZGXBbg7VFKiCoxIKBjAKmaBGRmMQGWLcIFUGEBVCG\nXCMsklBgnzFpsiH8+363mIaxOZb4fKN0+DWbjfDot1mfnTSNJcqxBL9N/hUy\ndaHB+gsQ0eX0ZTf4aZCiEacOe/VCjC/JLks7xxccz64lMvmk//CP2T1OwNex\ndNfGtJQHJc3hBFZJ2uLm4fMhyM1SVgyQtdSuyqo4ScS5K6kziugbK6KrMHQ3\nSYXxKzDEziw4Ea9AonzpDtH6y6YIWkHdrAYhZUcYgFihrp9pKYdXbXmd8Bh7\n6h+jf7ZF6vOS5sf1EzjIJ35dqcZ1FFmFEvfMSpob8HueEx6cqAM8kH4Az8tq\nuPLI6nAiLWtfuAkFfGft1KFbcyHnCNzdaizWWXZea59LluIFEIN3PD5uMaiC\nEJOKuGkQzw6t3N89TPAFkugW6cPr3B/R7PHPZ2wpctIvNubBNeD9ZL7+Rqhg\npdnTn7iNGkvyDgIBevsY3+dVMSyzq9gEXb0NWD20YCLaaF+dyjptQYoU9hVp\nj2xl8a4Rs919/pWca6fkvmG8EKHdIqnBYsvmLNN4S2jR8jZBBKmumuoP4EbC\nRgTd\r\n=CUo5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs0///b+12Nzre5B8tavgtIFYgWKympJ7/5djCcgECTwIhAIka7Ol8c5dzbB1rhPdVIpb9l+qnwNf53meyU7yw+na3"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.167_1605820594310_0.7136087855522317"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.167\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.168":{"name":"@leanup/cli","version":"1.1.0-rc.168","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.166","@leanup/cli-core-format":"^1.1.0-rc.168","@leanup/cli-core-lint":"^1.1.0-rc.166","@leanup/cli-core-test":"^1.1.0-rc.168","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.8","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.168","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CN6Z2VtL/2Jq4jqq9Wv0VJFlfcps0PoN69KI1pqhmvzNaBalOjs17+3QY4wb+Is+EinlbGR+EMTLYNHXjgtKDA==","shasum":"1c1f921a52d65fbb857a28bba38665c1f4e572fd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.168.tgz","fileCount":51,"unpackedSize":380071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft1sbCRA9TVsSAnZWagAAikgP/iDbmq0Y/w6EvuRWEqur\n3nCs7WajlntWoWyzNF+gS16Cy1/RmddiuizNeSDg3PzLr8O1kS5Oda03TWVN\nedrAd8qT9IU0+tYtpfu/CqWlGlv7e/vNhQRgy6N7ku2YO7/0x/7Mf/5NZL0u\nbw6h4WRRsUopTPvjyDiLMMmEuq+hODbjetRatRzAUqiVxrpJC8hCq81aGDhG\nkR6u+D16wvC7AAvWjUfuVv1ec46POAbKdCrURgDzRpFBY8np8gNy60LZeAtU\n0qxpxlQrRlHQhidsU/62HV04O6kkpabuSEsmBZ9hbru6uLyOdSgP2e986scv\ng95tG3Ylg9sEa4mdRtwdxtTAs+MAvHtJCGVSMVRIJ3P3A5g4LI23rdtV+G3p\nPKysfrq46g0oPlGTrEBep2i7N9mJAmhZpn9J55WkyKhrJjXVT9xZlDUSWx0s\nGJXuYjOx+9Jh0Dwpdn57f6cFf40YijZWiEqac4be6eyEZRHnOn+fMVhfo57L\nGmkRRf+IzUe5t7lJFKORZ7QlFBDHfzu21mLASMk4T8W4dJn9yc2nV/5yPlPB\nrG4LzuiyveuQlLWpOrf/nQ+hdRKRS6RYsdQ6E6HYhJkHC/hj1eSNQoNOqMVs\ny4ivcxNqZjDRg3L3BE538JG9hPFlbsPkBv7V4QoQ5jGWhqCxmdNTy0dKoQZw\n3X0H\r\n=PvXn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAQ4UO9Srh4kCjCIDYrbU6yPA3VSTBme+MOer0CZHwK2AiBZ1gfL6IS4sst5quPEzcb7kY/FaUxHOfnWzYoWrVGOcg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.168_1605851930823_0.12133287552481775"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.168\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.48":{"name":"@leanup/cli","version":"1.0.48","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.47","@leanup/cli-core-format":"^1.0.48","@leanup/cli-core-lint":"^1.0.47","@leanup/cli-core-test":"^1.0.47","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.48","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Dc7MxFBfywBKLwtPHXmu6S7AXrFW+U7W+IZC9sq5fle4ysBFC0DegM0Im/JxrGZpEVfL2ph1VaV+xaaezOpnaA==","shasum":"7f52bbebcb6bbeb395432cf6b6450b2f716890b6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.48.tgz","fileCount":51,"unpackedSize":380826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft1t0CRA9TVsSAnZWagAAlD0P/042AmXI9ZwWzwUQ92hc\n/hm+qp/3+Il+FZRrnTD1RouQFzrrsGTzGbOI/le/EJL/kvOBfIwmc0cGi5/5\nv8mBmV72aYS3+IdJm9LMlXLq7GY8cZLZTb9mcClui3gaPaDRShtSpKiLIjdl\nTZfP2C+arV373ryzu8t/XMDth/7a7GK3VOwX7LaVMG17fEhMeIBaFMXmr3wE\nO95pSsud4YTOuDerzAD8x0ATX4ailN7gZJwuBh5bpTeDuggTO0A8IQAP9+OP\nAWfx7DkUh3iG+deIuULde8dU+xytR3qWNWswrzEZ46RcQY5xbY0ce7kTBj7V\nUXhk5SZSFHLK5rQDXPG4brjTsi6kuNitWWEuzQTk6ZkZTOeDwIJaHYtvykEX\npgdDcS0ERB++ZyEuZEzUujLcsh3yidkRFIYDJfJtjPefliWf630WeGawFepq\njJCUvbvmJ/ql4pzM2dab1MCZNm24PMOu80G8vlCLHo+uVG44IhhElEMHEpjq\nQSh7rY5I1YSI2HXLcQZH1giegkIPr5Anzvh3L3JAfeHWYnSf3zUapgARxBXi\noG2QtB7FJiZpYW0dCfADtiVL9ZiyCafNoVTbLgd7ChzDG5lwSfYy6y19knuk\n2g40lVJArsBg9s7AYSYr+LKeSYG2DKPJ6MKFilZ1nDX4mCm9s0Znd7O6IBFt\nCDNF\r\n=l8lq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEG4jcjN6bz/bmxSvHXp3cEd4WJtP1kMl0vSK8QItzJhAiEA+Ji+oGvLTx4qMdCH1itiro81toTt3ROmqBCuUUAvLfs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.48_1605852020324_0.466296235177345"},"_hasShrinkwrap":false},"1.1.0-rc.169":{"name":"@leanup/cli","version":"1.1.0-rc.169","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.1.0-rc.166","@leanup/cli-core-format":"^1.1.0-rc.168","@leanup/cli-core-lint":"^1.1.0-rc.166","@leanup/cli-core-test":"^1.1.0-rc.169","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.8","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.169","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LjrYjq7prz2jAGIjfan4dTqognzqr4qZO1HvFifvkfDMKoWXvt5vPIZVVU/VwtXc0J2tvtBjeTxn5s4pAgQsBg==","shasum":"93fa924ba092ff3878c51a1e484469df795670ba","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.169.tgz","fileCount":51,"unpackedSize":380381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft3WWCRA9TVsSAnZWagAAlj0P/0dvspABCmnLikHHDgre\nxYsO27NWX3brggWKhi55DCL7sZIdz51A/GvlbyU76ufvDnmfE9CqhM+YQj7v\nKu792DDJKwBZ84KIXnw564V693pRPXU+MSl/L+w+S0Z8UzAzVT0KsB+LNoqp\ni9D3ezZIOEAZignJJ+6C7IL5XwwpAGSnrpggmBuIgxmP+40vz2Fj5K6QjYMP\nGME0mjqJTNQ3o2faN5CCJakx5votaUvVa4ODQnda0nD6LUeh19yH4QqBLHMB\nFbGK73W2osFxuJh2SXAp2J+2SHlsYgmwPWoXY1kQKu3SqrIh1eh7zYXyqegu\nMn9BJYVR39e1/PJsKkN3PSeirQ/HDsFXDfH+/BcSJ1veg4Nx4RRAXn78Umfg\n0Kv5/MMEkJlJ5SjyZniG3UuAa9FDR3Ys6J0eFxDx6APuV2lQOQ756ep8CvV9\nEdrh2JQjmCN0buWKnDiPeRDqZgvM3vXScx7mcM7Y0PSmyHRRFhvfIzPrcEcF\nHRuS1tK9ta7w4/Fae7uGH3ymMndXoH9pTstoQc09yyWBewtffdwJi7Kgx2Fz\nbyusvNUnx7v03kv2Mp5TmBT2CljVyJPpi1Kc04THuKubTwTimiZds8fQvq0T\ndbvdKtFbH7EpzUZazpgTYjKnJZivxndhyzi66SK9O1Fq5zbYNcjrcLKsWd7w\nM/8s\r\n=GE9n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICSeZa19ewrjQZkygcD2cvTkKKRDDngUsopllW9UlJ6rAiEAvGSW6ALBS8YUF3XBg1gwO9hLG1SXdi4c9S8KgVTTvLg="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.169_1605858710212_0.5992323511937099"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.169\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.49":{"name":"@leanup/cli","version":"1.0.49","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.3","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.1","@babel/preset-env":"^7.12.1","@babel/preset-typescript":"^7.12.1","@leanup/cli-core-e2e":"^1.0.47","@leanup/cli-core-format":"^1.0.48","@leanup/cli-core-lint":"^1.0.47","@leanup/cli-core-test":"^1.0.47","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.49","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XoS/Ow8G+kgUsf+SdM9uBxKOhIK02v6r3phWWISxEUZES7+8/uFfkNiQ3F5NSEr8YC2Ma1wPOi6VUmm9jeaC1A==","shasum":"220a5abcc27a3488dadf51210b0f8cf939b4baa1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.49.tgz","fileCount":51,"unpackedSize":381136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft3WsCRA9TVsSAnZWagAAIQUP/j2jQE1xEU9ayOru8pv4\nRTZTWQiD4pWOlzmXwkY0prxcyu1eH5zw8UNnCF3u3tAiTBM5Uu5uBkUvO1lj\n1xQc0AMnxE/cfgEeWT3Io5x7dQ0+b7iGShx6ZYGu0v3q4bUpLV4mN8XT4O8U\n0qq8TbFUz7NMYuK11ak/z/L/SAj1PqIMmsRDGT2S3oV9xkqRgEBpPwXapvSl\nzeZt0HTRIkHIZaH5zO6Li9r57fE0pfV97AQ2decsd7mOzwZV5l//6LVnyd1A\nb+BsC/aymc2jN5aFY8s9+1oUXLWToeKgg3QpZ811gKYeruWJo+h9wYjg5jZf\nyuCN/Z3ftmZt1RNpoog0xJPYOtLRkZUd02X43B0dszfy5cvnsp/FBWt+wAj+\nyGTqIDuGK4mC4kC/gV+nF3o8nZZkxN+g08L0XA9M3k53bvNtYTQy+wyDeQ8O\nleLbCZJMHqYIQltHIwX6UbNHvqfzmH4Bi7HWfMgTXXSOyn6Cp/UkAzS0TPl5\n7ZvO6SevWwLDaevA5TuYxvSPcRjy0JWrOHkIpzfMbGWRfKWc+5QA3mWxpmXI\n8X3fOQii5nDszcsf+xNGbK3MjalSeL//+aWsDgyM6c0pPsTDqPonCwmahVOo\nZTkdwXIoJbtsud8wHDYV3LAdzn9NQ/ZgoZsvtutnZrOg3P+ORSPjGeynA/At\n5pw9\r\n=fFGy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCdqBptF30K1u5hCuhgFtmnu8vDapcLTTlBxU+TK2rrwIhAIesi0rFbsdzhhOWfNjAFetdFi4wfjnelDyqAgVm+loV"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.49_1605858731813_0.6693549662329401"},"_hasShrinkwrap":false},"1.1.0-rc.170":{"name":"@leanup/cli","version":"1.1.0-rc.170","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.7","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","@babel/preset-env":"^7.12.7","@babel/preset-typescript":"^7.12.7","@leanup/cli-core-e2e":"^1.1.0-rc.170","@leanup/cli-core-format":"^1.1.0-rc.170","@leanup/cli-core-lint":"^1.1.0-rc.170","@leanup/cli-core-test":"^1.1.0-rc.170","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.8","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.170","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eEbiKZ3fO+uJxvkCTDxnxJJLGPP4pLk4J5huZE4h3wbjV3unZWTt6t2Wwp1xIr//5+T7SO/5vP7peY4VF9Vi/Q==","shasum":"d69ab4297af0f56eab628609a347f90566371a52","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.170.tgz","fileCount":51,"unpackedSize":380381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuLzTCRA9TVsSAnZWagAARQQQAIrqXe12X0OsH1QW+zaj\nIWp+odo7X05yFhpSlZqVBf0yFwZjQCf/E+7RH8gvESMv8s1BJqulhm3zYzb4\nJ0un9ez2JysSxqmWecicJOoxyN8L+wpUPvFozbQVcfRWYZlJIfc57g57lgSI\n+2V1O21idfxldzRow8p+gQbdXDFSRpgAzOzaBYiIQ5vkibkDj4+p02WotNIb\nwspT48twHmbR6EPul5iji87wO9e6j7sGOzp4psymsnf1ZFt3PHNBGii53w0k\nL9FdR8mNa9x0smIg1Mzm7D5bt77EsMdO3nR/ZAZCR8Fyu6ER4gnpjyYmSK+v\nJfIQdI5Phj6VhwLcgMz8phm3Oe46Lna6NGkdcdYoLzCLPyPMllYUZ37A+LMK\ncK4iz37gdAjwM+bLFkYrskQ27Y9I/CTAUOCN3QXAYDyzCCnl/n+uhKrkJ3ld\nQs1Thidg/7p/SgVmKKXXh/PyIemX3DutvHWSP1Vrb4+hiuTvlXa91Gwq/VXf\nY4OLED0MwOIxsfsAeO5vNLxFtOnqAwAzMfPb/7X/q4Jh5SL1wdy42WVSiZmI\nbHa7fCjhGX46fs5m0mzg3LjAAw/VEhwl/HBl5MScmxc8BHF/QfYTH+OZm43m\n9CORCyF6Yul1WRQeICUzfBJOnj3ORh8T8jJwRtsehsZD3X68iR3j/8k6YS3N\nqqUy\r\n=6mWM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEms0bYo32hyPepfQgX/RPJQFQ2EmK6zi7SKFMoS39A1AiEAtNohowc68Kxz1yrc3GQJTbjvmQfjgjtFLDOGnifbXTA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.170_1605942482695_0.9163538018152013"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.170\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.50":{"name":"@leanup/cli","version":"1.0.50","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.7","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","@babel/preset-env":"^7.12.7","@babel/preset-typescript":"^7.12.7","@leanup/cli-core-e2e":"^1.0.50","@leanup/cli-core-format":"^1.0.50","@leanup/cli-core-lint":"^1.0.50","@leanup/cli-core-test":"^1.0.50","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.50","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BDbewETNGC+NseaWfXlKHSTYRx87PWw0ic7mUZ+nfJOy59hg4TaQIEy3ceJE6xL+VZrPfWFh+TyKzg0FYKniXw==","shasum":"c1515155e6d706c7e43adca1c179aafb8a272e14","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.50.tgz","fileCount":51,"unpackedSize":381136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuNr6CRA9TVsSAnZWagAAKnAP/A+xdMS+mMKgADxodhBL\nPlpivKL5UfmYdrLi1RcaZIuKl3jSlkytXoiZvI1OJQr4ulWm7pX3Ot1mrcph\nxVlaHPilzXv6155dtpH4h0G8OAt1bKp8oUuvEuK1HMSnsUFR0C1fLSjt/EDw\neGlWBTCLcUXWS0b16Ed68CaNc+PTIhYQWltb6O/ZosnW6RGFfoFgHC28tARY\nsu52dpQ9QV8kgcPGAt8tVxlbuRBxtcbb9kaCCHD5q6uWaGgtaonRisxqMNrl\ncjqv+I0EUOAzE1D2v5/MRvssr/5+iCQ6bJgluzG77sEd4NWp6LGGx+ogCjR2\no3ACyUhG6ez/mksojs1aoQ9iifGKWLF00H06V3lU8ejtDM82xGgjQ0806cRR\nPHTclCdCFMc/RwTKDuSbcUdma3Sn6C4FSuVMSwipWQZwEnG08pDgul2p9feE\nXHw/fYF0cM0+ihtcHg+po5x2ikr7JFeNkwfSWPfMPVzdA+wPMpJE7rWldtqE\nHOf2LgKDIM8o/1WtmnMCKgQYONMq+s0SXoyNY485S/UuuadRws7R4Ehg//fX\nCJn9IAT1Uemy4iCNsMMrP0rtvVomYLZX/ihu1sWfIeefEaDqMwGZmNCIv4R1\nqeJeOiMQRypoJ4lcZhATodkXiBGOQzWxdUllf7yYl4qcJ4yYMMNJqboOeRuB\nXzcu\r\n=C+TQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHjdwc47mYS2eB+92rlTjKiOmASdj3657jXsdOfgAWgAiAQlpCBKVD9ItB55HhAgmOwWhkpbzKuqET5O5DL+CqTpA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.50_1605950201681_0.01131298200328823"},"_hasShrinkwrap":false},"1.1.0-rc.171":{"name":"@leanup/cli","version":"1.1.0-rc.171","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.7","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","@babel/preset-env":"^7.12.7","@babel/preset-typescript":"^7.12.7","@leanup/cli-core-e2e":"^1.1.0-rc.171","@leanup/cli-core-format":"^1.1.0-rc.171","@leanup/cli-core-lint":"^1.1.0-rc.171","@leanup/cli-core-test":"^1.1.0-rc.171","autoprefixer":"^10.0.2","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.8","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.171","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YV/TygZeE1BlIsuPy3XXVVQ5QcpXM/HjDZXoqvX4OdWwwbdY/AkBVmrMalK2i4nnRwNqUnN0KQPFwXSKkQQeXQ==","shasum":"c0f0d09674ca44e2906467b4fa094fbfa3e5b65b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.171.tgz","fileCount":51,"unpackedSize":379907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuVvaCRA9TVsSAnZWagAA8hwQAJON9O7/gOj41/G8xd7H\nZTRCesgSpYnWr0+HVYCWRDF6qH8yZJ93wn5hLCG0d/GW5JvQ6YZgWsLxhdVR\nXrtm8ogyJcBluJj5FDw+88TJDGH5R0sdqzroreS72F7QzrtVnjPdBhdgOwUh\nHmUod0TYrQ1VNGtSRbUe5Le5BdQ6cKlg4E8s85Xb6G6E0lH1T/eT70BCFnIy\nuZ2wyzjTOAlIuQJml2EoSjeOKcDy3tKcxAqqhj66IQ4lEh7Z8x5yHl74It4P\nBMVyxzaNK8Ezkjzd/Sk4YjyX2NfTrqrTigwXfD1U60UTdW7wsVYZjobCnLL0\nVQGX/BlvryMVfwRMmOpRdRy0uMrX7gsIpXJ2jfc2btpnCgse3svrzq/7SzN4\nzDBp5KwtbnZ/bw3S+Hc+G+fmVZ7aN3Yq6df6KokveYueHTGfbNdFZuAUr8uY\n+7GHV4/BbnY0YCeISGKClwuiltLAUu69SBJ3lANCANswJOoYB5P6QfRPTn20\ngL7T3tOcIvUs9LePG9Daaxrur4L1tYb5L43Uy/1OAi1t4ygKbKEaBI+szBdP\nSi1FYneOO0xncPMdO7Dx7MNbFI1Gq6vbLDNkoOjldShsXW3dNCFC/cZjqgVg\ncLJryuRkT/bjXtnT63yfdXpEyMg4eiE7rcqkJ24vCoQk8hKJtI/QwEHrJo/y\no/oW\r\n=fTDn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDR3dbQSTWljA3peaURk9JsFNp1nhRE6utz7/9L6tvdrAiAmsHuz6B0H+i+xDCLQDocsN5f/snuPWj7tgpRZu9aNOA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.171_1605983193340_0.5984794312382391"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.171\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.172":{"name":"@leanup/cli","version":"1.1.0-rc.172","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.171","@leanup/cli-core-format":"^1.1.0-rc.171","@leanup/cli-core-lint":"^1.1.0-rc.171","@leanup/cli-core-test":"^1.1.0-rc.171","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.8","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.172","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-E4ndrU0puWXTkieOHkPLOzLgfGsxrI3ZnNbT7QWMN45eNxmj21xj+MHCyB7HdPXLDktMkGnCtDAej6T4iGYcmQ==","shasum":"13ff1be25469fae3dc4665f07e2c8b2d6248fabd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.172.tgz","fileCount":50,"unpackedSize":379022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuXLeCRA9TVsSAnZWagAAxvsP/j7KfnYatUjujSzOPG2Y\n/om24MWKTHC87jVmTiwLeQI6hRpa56LGcd2NLzZ3FhraMSjRwzvvrQUDCyN2\n2+DB3Nnibf7gK/YudekPmxi2ua/hV8qzvjybNlzs40P9ldvoU3bgxRLRW61J\nAwpI686mZ03MUVDuu1vVVdGiw+22xaBzEULCfMn8i/aL+uWb72NE1tP6V/Kh\nnAhIGiqZmI2259MyZmxR5Hb4ndzu+bi53GaBnkxO04oOETtlSdMDIH4pirFb\n8Hkj18F4sSb9NxYiCyk94nrBvQOW8sk9Jpo85bBnrt70awIGh62c6YRSVq2u\nDtrJeKykpL4CZjZObvqgNRwILiJqw6x58ywwi+voO2SEs/g9x2v1+zWyqow5\nr/VvwNd9cUKMgjzUocRZksrromymfqunmjNUA7NKtaR204EPg9eK98jYBoAa\n6HcZ3Vzq9ExipNTTHJiDDfZ8FGj5KIoxjTyVSwhqaWV4zsGAFb0GTr9hOxNi\nYiPRv1VgzQw5GXnGufWPLVnDV/+BvjjaanfVqpu/bzGYOIjttTpZ9SO92NAg\niGczxz5V5OPvm1S7mk5EYxYie+xiu6VVecZSN0FZ3FzeF9UeCwkCdX8+OOCR\nSTfPe7bJw2h0AXpTBG64HDhm5xr5d6pdefLvI9IaB+jE0HwAFfRfB/DUvrds\nBGGX\r\n=/jwH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNfzpxqk4ZB99Ck5oTxLQqow6wufyQ3/5j11DaBaKBFAIgK01TBjpkQxpWNOmknk1HS/UNva1+pA2glfewEGpLgsY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.172_1605989085588_0.6765200742993411"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.172\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.173":{"name":"@leanup/cli","version":"1.1.0-rc.173","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-babel":"^1.1.0-rc.173","@leanup/cli-core-e2e":"^1.1.0-rc.171","@leanup/cli-core-format":"^1.1.0-rc.171","@leanup/cli-core-lint":"^1.1.0-rc.171","@leanup/cli-core-test":"^1.1.0-rc.171","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.8","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.173","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-g33VuPW5dZ5opPBuoKR6bdka/CkziXdhCdbjpfc3Y9ZjqWNRTunNcAhjr5jLmaNOZblE+cNv4c+XHrIT9/W4NA==","shasum":"a9299864a58a95fd809446e600fa41b2b94a33f9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.173.tgz","fileCount":50,"unpackedSize":379074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuXcaCRA9TVsSAnZWagAAcuUP/3gGEqxtnAUnzHMflp+O\ne4bEbQjG8TyI3OSF2BL++C2qIZNlFyeszvm7/eiyjAJCahwwcpPUgKOTiLzT\njrR5CHyVEKMxhZkG9P3nMs9ahu0gxJ099LrpZ9LrhRqDskdy4cyvMOVaNKNv\n3tPHHl1N5PNOdAI0h9xgWuVCCezRuADvLeeV0C7Dq3DE4yhqWIUpPQf+RjFQ\nClk7XVr/Fh+p9bYVMgBIkJgh9vhR+IFeHtZwIlWPcFRVEIBhPQ+j2upTPZ9a\n8qXqYDp2CvO+NVQHO6fh3Lt8wD5kTK45ZWY5rb706XzJRzXG6BwNabgej+F/\nF0iRiKyixLnHD7mtyYFSmgFlUhSL4iEfkTc3wdrutyo8KvGHzr2Q/B++glsa\n7cMuapC7w2OlDNxvDt2Holb61Qi5W9vP0EyT6qmDbeSlLEiC3httazcAnSQK\njswNm5w7lAbTNwH6Ndbu4AENlhFMxR0MrsrUNS7/M4EMn/syq757ZnNOtCpI\n8IPGpBXwlzSQpU/XLhzYAYhLDHXF2uEOFurwK8XiotErG59IyAuhxTsN/Qde\nsOAAnTFpHyXIqr/u34g6I6ck2EQC3fHZgdsx8vdhHs32woJRN+EMiNg9kICW\n3SkQ2FtcFzQ6gYD0ptEeT6nSZapkJj1zAQuxtCsfABX0p+6b+kKTclJ95s82\nOHrt\r\n=/SIQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDi3id2wnMTr/heJajurA/nxoCTe+5xPHWE4ZMeOyL8MAiEAhWt9qWDTH5MRfqdJxcRByV6JaDIq/920zkX958KfJck="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.173_1605990170354_0.11276168770479256"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.173\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.174":{"name":"@leanup/cli","version":"1.1.0-rc.174","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.174","@leanup/cli-core-format":"^1.1.0-rc.174","@leanup/cli-core-lint":"^1.1.0-rc.174","@leanup/cli-core-test":"^1.1.0-rc.174","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.174","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-HnwM0NKuAI6GoVR9daZue5uUb6opUoIIVzBZlu0ytc8ltd391F7+QcD4E8MrKumZim2noxWU5nFlDbrD3EkMzg==","shasum":"3f64a8585c3a4e55a14819617a308545aa10c1b2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.174.tgz","fileCount":50,"unpackedSize":378411,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuolQCRA9TVsSAnZWagAA2ccQAITHyV1/ExTgS7I0fbrr\nbHjl9qBs5hmaNEZefRqv/NRvI3qs5GnCx7R8s9orvH2u5Y19yMH3etCk9eNR\nymMH8y3Du/9qIfvhfxiHSWvVDZylM71HDHSDBGaY+CHJzGn3XgTYuhFRJSwm\nM0wSbUSGELwZZk4Rfw4wbB2XvgdmWQzr+siyITAlD5k/7qXDKivZpYcXt3A4\n+kH0lNUAaaemqW7wIIwQRD4d8NwoPAlFTHuUSyJMLYDW1I7eXZl7bPL9CQ9V\npP/gtTN5CLagkoSar3A3CRSgmhasbYOX6pQZJ4VroRg6xcC1DoPvmYsLiQ9Z\nso7klhd44tzm9idPjZ5eEbwsANr4vdl2rrz9drKYCjZiZVEXSjZZRtq2M5m9\nubXpufCR6HBtcva5WYMg9cT9+6DX0LD9zSKl6+HYbh7dIzDhRtmuAo3JOk61\nZYCQggCgO1nvXNdgTtQESRG1cZFLaQ3t8h0SKXWtyQ+w+IqU1U77FHj2jAa5\nPFBoMoAxiffoMrdQ474N7Km3+qhYpL/OsWNekl8TI9Ber7+DVi2syg6uSlyF\nJwLs1V6a7CiyN05xnS42dAhV8+qVdtGIs3QJRdzjrdVOk15c97jcxDTQeyEG\nA5r8A+gsc7TPeo8Hd/96VbVVCv8GifJqUlYlTUKJZwyDm/J9mPvfMJJq8hXU\n10XY\r\n=DaGM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8/p3hXxHmiFFhoTh1NInfw0TeILGJilnn48m9sjdmPwIgJsv3DUWgv5LIQ9AIO1DypiSI6+E/vSfTpcetEa5H5Xw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.174_1606060368249_0.06603498067035685"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.174\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.176":{"name":"@leanup/cli","version":"1.1.0-rc.176","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.174","@leanup/cli-core-format":"^1.1.0-rc.174","@leanup/cli-core-lint":"^1.1.0-rc.174","@leanup/cli-core-test":"^1.1.0-rc.174","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.176","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5LlaPIQfjTIrWcsPITXziStuJZ5K0O/GYtgKktT8N3IJtiquS1QygtY8JRe2wk8jDoMNVtUqeBmRs9jvQxjV7A==","shasum":"a08f3ede77ffcbabfc06bec564f0375df78b004f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.176.tgz","fileCount":50,"unpackedSize":378445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfupKaCRA9TVsSAnZWagAAQRIQAJ5bRm7I2XatGiOvfUES\nnrR/FjJcaNTGHRvpi8vCrjbOTXNb33PeAtkc5HitWGYp1rXf94PWzF8B/Hj6\nryfDDgEnSJb2JtjCqQPyypjwX75F/XMNwV6mUy7uPGMF3W66UcXmbJ0F16KF\nMHoCleMp+CGPbqOOKdhKACssGS6BvQahKeUa8ECgy6prjPf/AXFTUFRiNJAI\nv1fsTrF291RFN9p3kKO+rXTZvPsp0PrL6QRL+ID0b1czSGMmLJb76VWRVFwZ\nIN1/gA10IFgpuTApdJjPee/mMotE8MayOfc1/7FmMokFN/pd8c3ytVa1ZJup\n+V91nS8/tlVshwQRdjjztezjjCrblegtzGLeQxudsJzPd10a5+rxmmDmwdNg\n8ar5R7uXujfdfqNV3ul/GfKKp0EFJPLEJRvoLrZLRFZRzUyD+J4gT3Zm7frB\ne6sBO4o4h1aTEZT2VvdfOqS5ovyzLuk9wZJp7FRCs576xd9YRCTFcvbdxCJu\njZYONokFbQnqq38Ej2OkOrqOJmjZHMauW5Q25Gouap1eDxqe+4SmtWrm3TlN\nptMvAos7Ze8zKZIho2ZZEq4eBqQltX50k4d4NpMkG4JBxIdw7uYhDryPjCIz\nPxqrFOn2zdeeYb4oTVfAkZMAZzTPukg0KhRHcRZ388tv6o82m9Qh2/GXZorX\nGbDB\r\n=Rz9m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdNa0DprYhccGzRA0rsDhGQlZ8ofox1GAAZ1oWvx5u1QIhAOYSZaEI6eaZ4Z13EY0pRk8rN/7tQYh52vJQzRvioZJD"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.176_1606062746065_0.5726516653650011"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.176\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.177":{"name":"@leanup/cli","version":"1.1.0-rc.177","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.174","@leanup/cli-core-format":"^1.1.0-rc.174","@leanup/cli-core-lint":"^1.1.0-rc.174","@leanup/cli-core-test":"^1.1.0-rc.174","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.177","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-r7mbs94N46qMhvN5vehtx/2RyknNWiAMm8AFS7ANFVYDgTEM81XHCs99EJ3qe5ksbBiSsTXxR2PJ1HdmgeroMg==","shasum":"a7cedf24b15d247d79df16285c8db7b7924205d8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.177.tgz","fileCount":50,"unpackedSize":378445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfurStCRA9TVsSAnZWagAAC8cP/RxgvnI3EcHOtJuJZebS\nhhzLD5CJ/rMOH72ZXoZpugdx3m7EsznbKUpyR/fkW0xZxLgvZFJp9RNKn+63\nGc++zrInOv2l5HIjOsXJKrZWgHuObcz4E5viEx+k3EF9UG3yMJTj2WBsVBya\nctSC6AyI+tmZUwqiDPf5TF9psGSS0lPLF99+eO5pADNe7XTsRECPrBdO5zKw\nOXYyUNnA9Q5weUTrYzE0TG0sahvr8TjXgOYibQ1NliQ9e36Zg1LCWqmUcYZ/\nUiBACg1GsVo3EXNLYOvLwvzdklSEIXn3JptQmBuc5MpqxpoQrrlyba9IXFnN\n20BzdKCXNuKb7fzWb/bGBqHMEz8aNoK0uT45w2VCQdfAd34PJd6+dTnvEqWh\nThfoUSsBVoktfy095t2Pk9ZtRzq0jJn/FvZvaa58p2mcyO67w3AA54CSVqIg\nPO/HhMMnkhxvM/2QZwlrKiWp3U2vyARP3+1/3fOFJ+I0uv5ylvUFMmWu2Co2\nZ0BjmcUowTVss381cSQsX56YtASjnxNLeulAkL2rtEscnbua4vvAlWgcir+3\n/SlBjXBXoRJUaKq2bku6AqEcDcbc6YNu8bQpskA+q35nsg7pIRsqeORE1z1j\nDv72RkqLllksI1tr+iApM60Yngaz1hc4Gl29bj729eC049gFNZSF6l+xtCLV\n6k8J\r\n=50WY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlkoXsWYp9aN3rStkJSi1EteodykREHzbwq01C/5gRHQIgEvKE5vnuYrNGyfIiXG+HtRkDy/rWRTbIVE4atAMmYMs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.177_1606071468789_0.7941990839653239"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.177\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.178":{"name":"@leanup/cli","version":"1.1.0-rc.178","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.174","@leanup/cli-core-format":"^1.1.0-rc.174","@leanup/cli-core-lint":"^1.1.0-rc.174","@leanup/cli-core-test":"^1.1.0-rc.174","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.178","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-xfG6dAd+0Gj+MtqpAGOvQACtLnuPkt/gElmdmxDZ3eUmqwJFllw7vZit24SqnA4V3br61OBbxuItvodk05m4IA==","shasum":"93fe17014cfb27d9a183d8acb6f25296017beead","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.178.tgz","fileCount":50,"unpackedSize":378445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfur11CRA9TVsSAnZWagAAseQP+gPbiBdaX7/BZt4nD1TO\nCppK205xUAHeeBX0I/ojsuhW6tB6SkZ25y+JhmHVJDqHCS8NfeGfjZivGhM1\nPITue/XYEDE4QiY8/7ocISobenqaYKHewduDtDXUMmyzEyDJRPLoa0VN99sa\n8djqDhbICu6y8N2zuwARjvh9fAsnciwgJhQtMwqwVRkqQAxOAnIq7IEUFnO+\njhg6dgMNBnxw9U89QNmyXUkmfX5YtbSz+wYCTzqK02kK8rgov5JpnnXImfQo\nS72/kCPWaFa1uS7b2SOyac0BlDaBICNXF5+9YlL0wjwaY27Vw08Cn+N9bGXP\nE6P4c9Sr5xkTJMWIv0CCyzaV0puXTpcevxPTxZG6PPHbjFrKHhZQtLxaW9bY\nCCA/XIu3nRCplJvRLkFA7UldpdbkDJJE3VZeS+I8oEq8P50+Q6oW+cKmIdOg\nTJ98X5DNueV3AxTM9rNkw5X8B8Ba1VrFDxy5xxTwgw9721XHQFGUlXZ7neO6\n0iV0MouIRPfqTpRbqN/ww+hCDA8Jfz10ZCdjzZ3t+aq3wRVMwbEONKaNl38I\nQ4NrpvQzqQt6jZ4z0DEXqyej543fNPkPHR3OsZqiisQ0vSCosatv5SshNIb4\nAsaiuLwZT5es7V2LbPbAoTIixWvn+n01IEISgsiJHt8lrwDTW778QfNPx9Ln\nG6Zh\r\n=4AUb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGV7IX8ScF+Uhgk772ejIyEVjkz7TMjfFw9zpYk+AKEiAiEAzA4BpAKYmKhhgdlE0zmiA3Yx1mfMC68dQR3igvjkkDs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.178_1606073716768_0.6163397494394403"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.178\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.179":{"name":"@leanup/cli","version":"1.1.0-rc.179","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.174","@leanup/cli-core-format":"^1.1.0-rc.174","@leanup/cli-core-lint":"^1.1.0-rc.174","@leanup/cli-core-test":"^1.1.0-rc.174","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.179","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aw36dDBVJ44thqZ7+9+38pePseXtv07X88rvI304M6jzj8LvMK6ZmQ63sB15vxMRSU0tGclOf3G+o8Oemdp52g==","shasum":"267dc8db952e95c631816081a3dbbc6944cccf0e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.179.tgz","fileCount":50,"unpackedSize":379346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfusRdCRA9TVsSAnZWagAAGjkP/RWry7yX4BgI2/+5f4UT\n26eYX5GvT81dUpfHDSVyaEjW3dJ2cXMBuTpoFW0Ra7bYhv+tR9sOVHFw0j05\ntAVV/0ksqsQdOPDHzxleeSvKAR536vo0MkyHk7kfotcRJfC3V7ikVzGhOD5E\nOLviUFJLOnS6jz4WlaoYaeOy5cxeExjLnHrMhukBanvhMsMct4nv3hkPgNsA\n/YxnHpQwMtU8kTlr0dxRmapxaVVb69Y8vX4c9NS64/mtIDIY/HNaXMQu+qDX\noFyllbAE6HobLg+4f1kKUgzYDYBTGWCjv3FLklqwMphJTNhi33xXh0oKZfFq\n2XRNjbLv3fbUb5QcA1fUEiJWh7xMVUVnwAq/1tQli2olkKYv+SZ3Ry1YzZfk\n0ykXJcmQaZ6zjLBgCrnSQt8CRe9RB2Q1DgBm3C+Sjz3o+KaMWgqB/Eqs9Qxq\nQULc7VYMvg6LEmhfrzZpQ5LecCIDqHiEK8ubjXctxUMa/V6M+vz4BTuhpMlu\nRsk8vk9eZTZhfA9bRXBg4Dsq9CrbtZBFV2Bj2UlHh5hOhLbrVxZrDYx/wcHb\nH6osDuR7wK3DOQJp4qwItxp4kUAz4PJDbvO1TLwCuKzt8wicdw3kUJ8SqH8k\nXmIbc4RD5qGb5V+jArk8NnPP1nirB8nR3Gb1PPosbrSCWIY/GIUtSmY48/fj\nHTKw\r\n=n8v+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHepZjXBxgFMEFTHaldljlq+w2FjXXqgy31Sw5ekIds8AiEAxlwZRaiAK7uSH4eUAAVxh0Ny6qsYSqNopKgxLS1QJz4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.179_1606075485316_0.9410610967830315"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.179\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.180":{"name":"@leanup/cli","version":"1.1.0-rc.180","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.174","@leanup/cli-core-format":"^1.1.0-rc.174","@leanup/cli-core-lint":"^1.1.0-rc.174","@leanup/cli-core-test":"^1.1.0-rc.174","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.180","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-V10O0p6hWGBY8OOFgwTHOQ9Y9uQR59jufOZr8E39LwMa9c0rkJTv265syV1fKSNWZhOKuE1SGEFazdHRve1eeA==","shasum":"1c29c09a933c84009acc8aefa003a1892c165365","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.180.tgz","fileCount":50,"unpackedSize":378806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfustnCRA9TVsSAnZWagAAOesP/RDVstpYf8nZMNpsMKJx\nKhheK6KDZbRyhY0kh7G9/1naAslE+2KLle66RjH65JPuyBp1lF29LO5eTY0h\n2UGdeOit7f4mMwn0ZRiR7Bnxcn5AHkpexqypPciKg3LPnRACkk/AAtfddx+a\nh44LRLw6L8tXVo+lRRkO6SEtAYv+19DG9rd1oDZxpL78ulSbORV95TgSxJ6+\n+bo/mQnX3yWO/sjaPDIB+fJRj1CzD7oxHZiTliE7YtqXNDAp8sMs7STrYF3R\nbhP2LG78FwlxGDcbAyO0dy8OuJi/TDu3yXI2I5me8GSi8k6Wt9VCamT4Avx0\nSHHmvHcjHGGGX7umy4jXs7K4c8mxRaUX6a5Ni2XmO7PHnj2KrArLzSZrx/B9\nTIkXmF6Jnr0K84oJbH1JN3Iar+PbhIx0fylDN+FCr6Y/iZUM8kwIFJr21fe7\nj8E8k7XL62JP6wG1zV9Fdeez2T5PvxJqmb8MgSNzIZwNXLoWmTkH6cSrQLQk\nX0OgyYxtBKm/mFgZHHVJJk9pSZhpXjCtPaZ2phurfinpxnvr9YOYwZAKqx/T\n/7dRTHNh9skxYxxcWtnMrrrqWiGQi5KZ7rRPiMqDytsj38GUywUGgeKOopI4\nVf3lY/C3iNbuFPahU9gJiZPinqvMZclqEBF9tjHzipCBPK+etT8YBxlKVAFY\nkbxu\r\n=XyiN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH6vdK6eWmpdISHsT0Y/VftgWLzVhqJcMupUkSjBEF9FAiBW0h6Vy518U64ObmnjzFeen0K/KNdjRA+tmrwZC8jNpg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.180_1606077287124_0.5154697377349013"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.180\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.181":{"name":"@leanup/cli","version":"1.1.0-rc.181","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.174","@leanup/cli-core-format":"^1.1.0-rc.174","@leanup/cli-core-lint":"^1.1.0-rc.174","@leanup/cli-core-test":"^1.1.0-rc.174","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.181","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-WBQEJd4s+ZUE49jdRyT9I7Y3KUIA754lt/3KPTCbYL9WCfgeuVxqGntC0oVlxuk+ohzc4bqw0AeIcBPI625H1g==","shasum":"ec1b8067b46b0b79caf1d6d6927323d5da0ac276","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.181.tgz","fileCount":50,"unpackedSize":379216,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu2ayCRA9TVsSAnZWagAADxkQAIJm6Yd0yuyZiSBji3L5\n4vJOZfYlrbrZv96FrAXEGexOZ3tDNTe7dL8Nixegj8yP5uKQ7lNf5MlUXmoV\nnZTSQ7yG0/FC+wOJiVBRNTGzpw/mAQP2myF5K7NZNBzr3sZ24gMnJApH8dBi\nmiiACgWFNP3xZOSvhwg/dlPEZt1sIbu+KhzCfzfm1HIbzq8O8+l5hxRZzDL9\nN6TnyHvff6nK0KxaAKWMvy4vv8vJiQxXvuufc3su2goAq2HMu8LAHMcxm2IM\nn0aMneb4n/Q9mY6asQ2M/vlEU4C2u6+CK1yEc6ODCa2Q9iMHjdjuA3K9wV/4\npSu9TqZxCtkQLsNE/qWfHKZDb6uvrgjvmSyc4J+7+okuePJ1+ZP9XudTXNP9\n/0MSkFQSAjEA3WE433OLXlyxkT0pRsTDbGCoTFeYjoCuE+v9Q4eCkiQWrPiW\nKQlTdog3H7RMWHZBmH86Nec6vagG48sV4P6IEsJ3h45tRxSSk1GBpi9muTBg\nV12BbgpL/7vAhc/8mgvufdqKVWPZCXfjKFagwekrrReuknaUqAbwhrMzGLKz\nVawg94xa6krQAmQeqKloB16Trlv4EVx2z1vGFX5zkHcxwHPhrRRaGfYeyBXh\nBmR9YRlfypB3tUAk/T7AwU4xqEJ6s3a2/O6gOFghOv+mea0yQ4DkME5RLXDY\nQQaB\r\n=bXbV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGUAxjY3PCSk1f/MC9MKaMSDBoHb0aBk44RhF0T9z9h6AiEA0Fz4/NZZ+fF/Wm18ShWkZSXnGaPxvsxuLNx9g2A/IDQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.181_1606117042153_0.19681445222639637"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.181\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.182":{"name":"@leanup/cli","version":"1.1.0-rc.182","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.174","@leanup/cli-core-format":"^1.1.0-rc.174","@leanup/cli-core-lint":"^1.1.0-rc.174","@leanup/cli-core-test":"^1.1.0-rc.174","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.182","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-69SSFEhtVt6xBLs9lav+hO4p79uI3cT9+AUmvymFxjdp/IV1IwcEP6qsSaNr33nu/ChwrIWEPGE6ojB6TdyvAQ==","shasum":"b633e875b29abec6449df284afca9fca64f0d8c3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.182.tgz","fileCount":48,"unpackedSize":379095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu+RaCRA9TVsSAnZWagAAG+sP/178012C7eIH/IBUpdLA\n/OEzZsLgtmUIjpaJ3G1UMh8/cMjFyFJtVDMZxxcYXcDHL+M83ZLcqJFnMk4V\nXa78ElS4moGXYbVpuPD6oy/qUkM1OxURw4+7oTJnjthkTIGbwJkMoXwEi1XW\nIjW6OfSeVFRnhktOOoWoXF1yOYBbao9b/b5ivBIIaix5ZiRbmEDu8jVGbKlA\nVGDkH51e+7bHq9yNDwZSmfx3u6PaWsuGFkrcURNBDpF2fNC8dg6XzQxA94kb\nqGMCK56zgKRcf90EtCT9ws0imX+QXm3Q26UvI573O7iwb/calZJ9kj8t7IQH\nUA+dWR6p+fthGRRRQrjz92owa2xgUEhK+SB+KdjTow5KFgFlE0Cvr6xgVivq\n4P9YmeljSyS/IKzg3WUjBMfTh9UOWupiikwgawp2aa+KjbirtlDvK7iAq2Qn\n8qv80hvi4u36hUQ088vdiusrMxcUjxvqe8lxcD/MzUqim8ArHN3eIzi1Pz3O\nmNJTo2OmGfcD5FTS30FlQC4YeUJsvXp1xRi35VHjQZkRmfo0T8KOyASrQUWy\nRxEpSaAiVra8LNqQDImLF8hAMccD02dOlD6UnxL66MO+4u34l0QHrhAoBbwM\nkFasXctAYKMyhseRNRv/+2Jonrxa4eOp5KXWVFpORuY474mishzpCtIg22q+\ncfPI\r\n=A71s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH+UIRLqN40OW9yqei2gM68w6Pz3xzOiaJy7MeWNtGDNAiEA2apG3YF2Q8PVYIMZ57USDMnsl6uyFNLYM0werhTjOo0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.182_1606149209274_0.8068058000891412"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.182\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.183":{"name":"@leanup/cli","version":"1.1.0-rc.183","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.174","@leanup/cli-core-format":"^1.1.0-rc.174","@leanup/cli-core-lint":"^1.1.0-rc.174","@leanup/cli-core-test":"^1.1.0-rc.174","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.183","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CuQHKh93b1MqPkIQ9CZnygEIYzEFPcB7JtomEI8LxdYwCV+RY+04ASbDzOUtjm6IP4d9rehOjLywBHaNM6eZjg==","shasum":"0057cfd954147c7b31a2014c62bd2ce78538ef5b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.183.tgz","fileCount":47,"unpackedSize":378281,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvBL2CRA9TVsSAnZWagAA5mAP/11dHnud7bEWuO7qoqqo\nc2s7GIiXLbMGiCBanp7FILa521Cg4v+tJXhMpoK71IPWWh4CBwtZ4E0/ePbZ\n0sRSd2Xgldf2Xs0wcOiqlLH9tpLDVsUt5NOnbffNy51gNcE+FukxjGDaLHjV\nCROfr5ZC6s4IiI1Ey2x0r5jEP9l1LFNiL0wUHL/TrcO6XPG9TKFfntMkG7XT\nTmEn9VZLuQ4qjtV2p3HmoewXPmCnKzUBWMmvLAem2K1Fwwd7oQJXo89233y2\ngclS1Y1Apoa2o8VVEAjkToR/fYb/U6s0LLHdBAKZtL6uveSzpwqvXr0cbIhf\nZa7SB1KqO5OVyM1JXs7En3T+mLsTAyTOjVsjn8Toq3yvRE+ughY3edQXnwvj\na98ZjmGHGEl/FRQed9P9y+5pEA3mmfSCR3ha37eQ/zcjXgks4yA1ZDC+tcuI\nBwOZlBhCKGHN7lAAHehQLOQe1UO3hPGEDQ4qUg/9ppIb8063CCCWXVZ8GU9T\no6AS725G0jlaQA2y0VTP8pHHNN9CJRD5xjSfgSUBtYmbfAx6nCBWCaliwrT2\nX0IQikrkB60UqMPlq2w0u2806E8za80F/wFGrv/0ypgush4geDAsxibiHK1X\n8COH4nmwFZIlfckJbKYZGMMLfjYjvLWaBmxQO5hGYVLaEte4lZaixjCugO6J\nnLpV\r\n=k5iH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmYoVy3e0aoE8RozlYSu+gSShUF7dKT6c6E4OEdBXe4wIhAJ4tgFZXfIttwXWGANNVPtyVPpecQxfHparsaLbOq6Ff"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.183_1606161141386_0.6849949802067423"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.183\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.186":{"name":"@leanup/cli","version":"1.1.0-rc.186","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.186","@leanup/cli-core-format":"^1.1.0-rc.186","@leanup/cli-core-lint":"^1.1.0-rc.186","@leanup/cli-core-test":"^1.1.0-rc.186","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.186","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-/imKBa4jyKt1paAp6e73pJTce57APWrVL83FYPFO1xFa4JRgS2v4hpMAl79eQRvPx8ghCt24amEA2flRjVNVNA==","shasum":"b996fbf5a313c05c4d8197af508bfa72fcb3d6a1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.186.tgz","fileCount":49,"unpackedSize":382317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvOdCCRA9TVsSAnZWagAAO/4P/1aOVcIbdxinJYIlzftN\nm9tm9mZJLChL9gluZKMrjIb05TBKx2SPMtCsXhP4H02VULtjU0Tg1kSTWlg5\ncBxyusRbsNTloH2NL93wWm3AT139kSLzHlhhUhFi2e5XmXTrhRlgXM7SxEsq\nq2mNaND4xHJH2yrw1je0G4xGWX6tGhVeRoolL1sET3gsD/Ac9z2empueZ7df\nSJp1bXVNq71CsM4ccMwWepG7Wr2UGDevcsp5QDgtPHSRYy5HvR44EV5rrzA/\nrLY0L6IlFIKL0mRy42652dybbhnw5JgTfQKMICSR6+iJ9vhEvFu8IgsPWm/v\n30sqEfxjrg+jxuiOKNoMpQXIwvmeEomsRJOR0LVOuWk3QBQODU6urfqG8Wh9\nTJy7d8puQoJENYGkoJDaafoh29lQuP+Sg8bvfTBJ/9hSn4ZPAAftsym9Yrzj\nAgc+5m/Y1Yl7G9iuLcO9dozPcHzINsX7/Rs4flYXoP3fJSyytz4dHyfj7ECA\nFhLh12KW9ggqEmsBe8S2qlAkR0AlZyDWaQaqRjj9j0WPaq+JaqW6XqOyiN4U\njQnqrRZXjAp1QdJLyt5C1I/4vLhQGCeZsW57VfMfduUZEymdpldkDH0W3YVg\ncDlvI8pncR6ZudPSACEYQD8KwhdvCVH0vl4tffkYjxi7LzMkz0GdOeUOOIYg\n5hf6\r\n=Shui\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID5tF9Fx0v5go+gAxBfBPIZnG7RC7auzFZRcxvRvAEqTAiEAuklTfekJBNoxrHuNpMvS7rMsyOH+bgSpSwMcuUNdJ6M="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.186_1606215490100_0.42139013891254606"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.186\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.187":{"name":"@leanup/cli","version":"1.1.0-rc.187","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.187","@leanup/cli-core-format":"^1.1.0-rc.187","@leanup/cli-core-lint":"^1.1.0-rc.187","@leanup/cli-core-test":"^1.1.0-rc.187","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.187","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-dgJ50wWxE8mnnl2mLPG0pnoQwpEMCy1KqWY8hBqEWoLQ3k/7NcAujle1pW3nhIIMX6Tc8X9NTgCB/TVB7MZtHg==","shasum":"758aad8f58c0d571b5a8f760a2ac1abc0143c787","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.187.tgz","fileCount":49,"unpackedSize":382317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvQFJCRA9TVsSAnZWagAAvJoP/2IZulV4tG99WJtG16DW\nH0UqCmaFWYyLaj6m84O8C0B6YTeqtOs6V1iudKBo9eodxfWlHj1C23WWbYYP\nA6FZk9GRHWVxz7/u/9QJFBmh4tmjuKO5jJ9cbbn9mf/S/NI7JKYvxJmu+elS\nPpu1JDQthHNC1GDt4nlV1gJZ3mRGVhoYcl2hnZb1WaDrmNBN6biDReLkwu5S\nONZeZktOdBu/yRwhZz2ItIeRxFLEWrYIJQekB+GsqS2VvqxyVmGbJ6DLlEIV\nxeJAwrFUNJ4D+4aKiHmJRP0y4dKT0BkVob9QQErk8kefLU1gw4qq9IkOgInQ\n1n7rw4VdYuvl0W1HKkBIM3zNLV29WYQLhlJL8TgTjmKipzZEaVZaZG7XOrCS\nkUMaWeTPeWpQB1m4mE/vq6wcr54SqF8sN6LKr9JZT1S3LhOmKTRG5iEJ9W8U\nljQJpdhRamu+LbwqzyvAJjuEk/HjQot6iGWI6PoniFd6/t5I21HN8VSK36BY\nUWVyFQhN2G4ojLnpMmOmuLZThRxC4xejuSNyiOPIo/+4LO5p4xwkm1ffEqTe\nfrkCn2dihm6+cvx9ZFRLmbuqfXoQKOCDpAjmY1iwKHv6EYIC1BktL3KA6W0c\ngiSMXyBoqLNvuZmkCLLM7ONJa/kxJJG6jlzGVzzv2R3FU/zCIEviI0CSl65v\nwVzF\r\n=1qIj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChauz94fpbkDXniArSn9BV+AncQ81rCSBgg2Nk5ApiKAIhAMIg3N6ap2VVHP8Ws9ilnt2m00qClBeTem5pZ/92A5if"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.187_1606222152707_0.5776231485872054"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.187\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.188":{"name":"@leanup/cli","version":"1.1.0-rc.188","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.188","@leanup/cli-core-format":"^1.1.0-rc.188","@leanup/cli-core-lint":"^1.1.0-rc.188","@leanup/cli-core-test":"^1.1.0-rc.188","autoprefixer":"^10.0.2","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.6.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.188","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Jo5tNLFrovac+dIrR40lVEkSQrQgIfQjC+tIXZIZjALkI48u0JLuR4guh8kfwJqh3hHjZ+vej+OxCUR8JOTihg==","shasum":"a8d3ed46b873310b3c9f3aede2b1561554e3ad44","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.188.tgz","fileCount":49,"unpackedSize":382317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvc6nCRA9TVsSAnZWagAArlwQAJSocuXRxNsPEKrZrqW0\nUEouwootApvIgbxyHGtJ47+QzpL4F5kVnIatu6RAQOAYG6Hit3WJZ+aHgn9w\nMJ2jGX5N/2Ce6+7NtvGQmf+4bGbnbXXh0hKe/Kmj5kaSrE1IjECj6LZ1D9Xt\n6cyZy+0KT4ygXqJwnMJc4QAP7rPDCcv05N3cfiz0hxxGG398nqX9r1JlK4jr\nL1tqqhwwABpRomP3qmmJs1HrETH0sVnfRSlObXRssq7ImibQvFjkEVLMSWq7\nZ2MXKYSNUug3o3HicmXKPArRqMzvtk2EZ5/JjLUhJpMOsrsR2HqDph0ndys8\nlNfXpEq2CLFRPjHbC6+AmvsyyyhVPUsfBssktrDuXzELGARZmgCucg9HiTcF\nQgbK42pxCH7iig8UrPFhIxeuCwM7UVRIVvlg/TMCbtHhD0yLkVkWbrBIBqna\nKyf4yJQHnfrv933QKqku3vCBW93g5ykgUisNo/cAneKxNBxa9FoX+ptLXKh1\npMPqK02y3WnI3qfwY+CpFZJFYA9WwpcpF+366zjBcDVqbNwXTolRncfLodO+\nJp+4v3i+rWTOE8UXsUpMklYTUfcfi1g1HJi6EL87gpV5Q53FWEl3i/BUVsoI\n6mGomxj1B7gmat0oRQoSZ44pLAQnZxbuCoMPy7vUkT6nhqw8oUmAwac+faTR\nc3Ye\r\n=GoEh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICdY31W+ZwWrIZLREYTI6fifqv1UvY3kPE7DBnw8jLOJAiEA4276ntFLOUBZ61SFX2jFFKWtJhzpMqP1zK71BYYxMGI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.188_1606274726932_0.9452798730841698"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.188\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.189":{"name":"@leanup/cli","version":"1.1.0-rc.189","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.188","@leanup/cli-core-format":"^1.1.0-rc.189","@leanup/cli-core-lint":"^1.1.0-rc.188","@leanup/cli-core-test":"^1.1.0-rc.188","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.189","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-AYNeCJfJTwLnEV7gy/UPCDNyx6bTgZJgCRs8z8NPaXrVUgjlgVSaolDD6TlCY9PU9aVTPVt7a6baprBA+fw/Nw==","shasum":"0930a2d7f76b5b7ed730bf5f50cbdc2851ecd3b3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.189.tgz","fileCount":58,"unpackedSize":392363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxH9iCRA9TVsSAnZWagAABS8QAJXtS6hdagXBJIo2vqDP\nlzNw68pMH6jd8r2g8DGO4dKCFafxonepsrNUHyo1o78EjfSBbGtkGE8Nns6G\n+JPKztdX9/SoIu09k8oDajnZxhScMGDC9buu+bTiAbZv3/GE2hW0bX1UFAiz\nGFoVa1u22Y+bmUHhSJzMhWeulCP0y2RQJf2VRVapajU/owSDJiHT4tPR+Igo\nh0Fi2aDgYzivB6xq2LbaR1kA3QUrRFY/yUlQR2GqeofNQyy4t+S61/xd9QGs\nrSFEQfo4v4PJZTVMErBvYYud3j4lMZN/zJFnvtx7gpWqiRl+K/B8G7VPnSnC\nE6b/qkpAat8/UoP3kBHK0hfyoLwI5OnIWx/uT0BmURr49kyZmbO6EdVg4WMt\n6LGQI00A7nWKNW8DTXwe3U+Qu24P8Nt0Poq0hISQ4TAjVAljKO0VCLZ6ry6l\nCd6raj/IdVKLIELYSt1RChZrzK+JsZP6pil3AbGhDkI1w3vJI+JSLQc+ia9r\nGSQq1J3BY/FKuvq2JMsHysJSl1mFvRdn/tpE78WMKGswOzZPb/DtWU/fRgTR\nw/de5Rpsecj1qxhiCwXG5CoF9ruiLMI3zG6PU6YT6iu6u7Z2oaUUWX4LX/nI\n251IoITjMjtYtkL3Z1XrP5H4PDZg/rl5dLxTTIc64GxN3aka8Ct6gpXAuzii\nHqE3\r\n=Xk2C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoJ8CwKoUCLlJHEtOZJZ5ujwdxqWgvTI6DT4tPnZJe2wIgJXl/6l2RgEoBuM0mxuG5GBz2jutf4TNYz+KPY2qf+9w="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.189_1606713186309_0.01380769017943062"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.189\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.52":{"name":"@leanup/cli","version":"1.0.52","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.7","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","@babel/preset-env":"^7.12.7","@babel/preset-typescript":"^7.12.7","@leanup/cli-core-e2e":"^1.0.51","@leanup/cli-core-format":"^1.0.51","@leanup/cli-core-lint":"^1.0.51","@leanup/cli-core-test":"^1.0.51","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.52","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-10bvzYu/NUHJ4Uv8fTIa+e1Ej/qKBYp1s7k9mDHQKdwwViMz8NiIplUGjx6YYrHmw03hOpeXgV4KGTt3AYRWWQ==","shasum":"1bcb3c2e7a5cc8df3d31ed6c82cdeb04dd8dc286","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.52.tgz","fileCount":60,"unpackedSize":391159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxH+BCRA9TVsSAnZWagAAI/cP/3/nnKlHITl3/RFaj15T\n0fFAQodQurvqe1OvvBfHyxGG+7uxuYlbYYD4aAU9S5m5GTeKFestdvrbSX4G\nYE/SJ1YH3lwZS6IIERBDEdn51QNUPN3fQuBuXwypdS2tKcxAB84eQvm5ooMl\npj5aKImyH+44gjdC+/9TpXMlMimoBLo++aM6kMKGt3QBP1Hw4uy7A9IydS9B\nkZcI87cjE3ZhieK0Z/d77E2HvYof9ShNqoG1vAF1eLdlbkwxbh2Ig8sm+tWu\nnJnYC4NuZAelwFYNhZz5HH5U/WZKqoMoL/wNSiZktVKknKGWVlqw1TREAhOu\nnPhUp1wBhPz3KRLMsxcSrrrdMbzk19NIPQnqyPhifYRaX3cbydaWv407joqc\n7zjF+hJVtajs2EC1W8bQJI6papmLJvQSRafOT0RCPeA2/eUoOA3wsc0hcYYB\n7aXCxSz61ukY88fNynPy9wcKeoxVNRKioS0YvOqtroC9Z4UN5c2Olrsxktt5\nKqW1MMscFIVRsoNjjWM0DvNqa5W2BHOh3k30joGhLMPT1qJW0Rd0rawgGkkl\nKN6Ceg5nr7oBF2Jg0vdCLJvNf2LBRez2RNQjZVcdpLtWwrzisp5zyvOn8Am7\nykzV5cH5FcWtC9oEBlSV4V8LxbouFbpOT+Q1AVZuu8BXI9vSvgGbrfsNra7g\noHes\r\n=/JgC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBTkGAydVP0prDtfvAxH8zbkkggQ5XzqRycaTxCZva0wAiEAwISeQbHaITuDNQ9n2SQUYiGjQA8Nm0mwCM3QItj3fWE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.52_1606713217262_0.40348617273457665"},"_hasShrinkwrap":false},"1.0.51":{"name":"@leanup/cli","version":"1.0.51","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.7","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","@babel/preset-env":"^7.12.7","@babel/preset-typescript":"^7.12.7","@leanup/cli-core-e2e":"^1.0.51","@leanup/cli-core-format":"^1.0.51","@leanup/cli-core-lint":"^1.0.51","@leanup/cli-core-test":"^1.0.51","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.51","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-o2wh8Sen/GJ5PtYIH4z+U71g6Gmnl6gL5kBx3Vq2EumTa/2xMDOfi5t8GuDhAgcSGyGrU6LTE5dMJccIFTrlzw==","shasum":"a916509d23254ba86c9aa9eb35902636881baa59","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.51.tgz","fileCount":51,"unpackedSize":381136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxIAlCRA9TVsSAnZWagAAWs0QAJ+mPwUraGxbDhxHUmlX\naZiJ/1OGl6AF06703ZbNGYJkNsoMY4hT2HT///KwXQOkrnDfy2RloEbGLpvj\n9zcU66xLNf5QIsJCivsJNC5JsBKxkNhWsoJtArmW3OWj12nbmsFRd1u2ZVf+\nx6STRu6K9RJONPeUwXGYo71RLrHxbQKY8EXHkdDirQ9NNhmyew2pByktXReP\n4I1Y1WzWSNh6zhlXIQxJNpy+9n01GeigiwwW8GFTMTwelijGOTE/gHZeuY3G\nZQ4/cSRXIL8zPSWyloznHK8H/rQDei2uII7JGBjI1IhiiTeWw5NY3pL6/KTW\n9PPThmIk5vMNdCJCrzdOEdRTaNIi6m7gR9XjKG9LwTFLnPWNNb/lRH8Pt+oy\n7L4JCX2MOn16fBfzz6tvKdmoEN9y1KOq1hBA2nh0T0TiIg1koJz6yEwb0blR\nUasl1U8AAbBT7W2uA/OpafILlo4tl3EXuWT+s9m4wmS4onvadLD8dUuhYbJ7\nMgrZK4Mj6u+Y82VVlhhE7RWcV26VpwWRMj5jo7WioPetl7e5kq2JeauaiRT4\n/kfaseF6tXx9zRpBwiPtmlkDltIIjr5HgjFb5N9bG8cjxOS6inANXc4yVA5X\npneThb1nPNVgdMTG/cEtEVZ8P/poJafMFP5bXHZd2l57vD4UjeBhuFp+YMe7\ngZYE\r\n=al+Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDbYHNQ2gXDBNmo1DY76i2dUsM0AnqobjjfOxtNWJPvoAiEAlMbvH9k6SAdRb0D5rWgc0ADezZ1NXW1l0/GE7poDq5s="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.51_1606713381069_0.1363728933478996"},"_hasShrinkwrap":false},"1.0.53":{"name":"@leanup/cli","version":"1.0.53","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.7","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","@babel/preset-env":"^7.12.7","@babel/preset-typescript":"^7.12.7","@leanup/cli-core-e2e":"^1.0.51","@leanup/cli-core-format":"^1.0.51","@leanup/cli-core-lint":"^1.0.51","@leanup/cli-core-test":"^1.0.51","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.53","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hJnE/NSyu09aCCB+CVANxy1HU1Sytn9P44sJbzUl4MtNjV2/U1Gexm9fEJwKRb49AjMguY47QxaTd+rFXApOSw==","shasum":"ce13c8b1b5325a6d556fbe8dabac8c82793ff96f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.53.tgz","fileCount":61,"unpackedSize":392043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxJtZCRA9TVsSAnZWagAAQscQAIzi2RPsEtXQ8danboZe\np4fLlPgf0rbNFUoOUfvyuwI44TrSI9gTmSn1Wpf1Pezf4LOYeKpBfklZvi7c\nSW6DLNNOv41c/NMOYA4JDZPpMrDN//l53N+RgfSRW9tS3YmPfsg0Snx1O0ko\n5L6fQ630gKQUnkWQliwY4qMydPOBBd0X47WswBenRDNnPFa0gtkEGs/nyQtl\nejzECCxqR95fDmHg9UYJQZurcnoyxDN5W0i5kCMRL2oZv8o2E9+5QBFfOFGK\njGwONmi78XjvVO9kEHvCoZualWKNLoWlT2rGM7LEbx7/ynV4Ev4ZjWkstyyx\np2Mo9A0THMNnk2bqouPIizKRTX28w6k4A3A3nKI5+HhnjICdQcSl0VYRfQL/\nSO2lCQQiPKbXNgo7NoFrP8td+9HG8LaC7Ym3+q/F372Dvo7Cf6hy+4zVJvqA\n3PYjL5z+wu62ok0RxhXdyvtx+CHiMvkOBZCtEUH+FUadEwvfi1UFGI8y1o+J\nuLR94yBxuPqnPL8eJhDtdA948WwEN/a9howY8+dxdBz6xm0wBT1jloBgf0rG\nrpfLYrKJvV7VcQS12lZhoq/P2XC6IxPl3RnwioHn/Hj8xw9CCsYrlchpd9zu\ntT8wO9BkXx3NdGWAgzHg4lTxNCLMHJJrqedJKM9hb4bmC5KhkBG5UpXiWdr4\nsh89\r\n=7GQ7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyWP6NjIOLHSmqCE3D+8sP5rpnSMFvV7BqIh+hhVhz4wIgf6OGcShec6a0VvVcx77v+ethANgLczWhCx2zdF+2DEc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.53_1606720345204_0.21067159375677602"},"_hasShrinkwrap":false},"1.1.0-rc.191":{"name":"@leanup/cli","version":"1.1.0-rc.191","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.188","@leanup/cli-core-format":"^1.1.0-rc.189","@leanup/cli-core-lint":"^1.1.0-rc.188","@leanup/cli-core-test":"^1.1.0-rc.188","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.4.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.191","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KHKwGir600wxOKbGcD0C3C9nzYKGHbhhACuRRL1qaXZYYzOcAWCnUxB/Uk/JwTFR8fapd4lNfw5NLgCiceE8KQ==","shasum":"f1ac49a4252a1cdf806ed629bf03645d86c99cc6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.191.tgz","fileCount":59,"unpackedSize":393214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxKC1CRA9TVsSAnZWagAAPuUP/1r/PIWWfqMlUvtPqa1L\nuKmWGEvR9XdmmeiXsggXHR/2CYB/5hMFqQjjxPWlzamE72+/cvVwJxPSSsvP\neV8NLY5xpYEJ/bnfW6Os90EbQyhIQSOqkxHVU0aXOziX49H8RbtsITBoIKxs\nuz4V1h4GCtMJ4yQUjJ2MVlRMETqpjOvBaUmdK/XkOvpY2V0Bp5yc8A4JU8nd\nVAQgRAUhmyE78dWziPHh7eGzIpieqAo4NRplNcPDN3nUCjDX63idWrVHl0wI\neRhthZJgusvp0p4tIRcwEIvD5A1nFRgpKbAB/T9Wh11ANuobLVY1Rwp7Xhpa\nRbQMaNzsCg//9A9apAyLwb0AIU/bEvHGWA3q7OmusJax0cDUW9D+HDEHUU+t\nGQcxDDTw48r7KKeaHMBByLl/ujl21A8qxGKjeSKobdaY7yphjJRPn79lFZHB\n0OCbIY/vddI0gUw8vdmLDXSTcY45K+ou4veuXATiDCei7Ai/fS0Syra5Uw0d\nCKxfgCZXw2T6wkYQ0lteMP8fLif2vSUCcQP55uJ9hZqYXcB0YWDUS7wPKkk2\nJcIOsFV8OA3/WercehDa6V3AYtCtyKErCYkp8bnMDsDEUuEW6QSUeIdOhMQh\nc6ws3ThG1j8BRvh6jhIOTsIx/dK0SCbVU35SauCQzcoKuTaXOQHokIAoC59f\nMmNo\r\n=MAsY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMVbbmeOMLsh3uTnKWCj9xIxVEGapl16e1xQH3IrxI4gIhAJdSk+wbrAFx94kzSbYrAgCWZ4QU3MqEqOiGlmD0ozaI"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.191_1606721717345_0.5016507750645611"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.191\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.192":{"name":"@leanup/cli","version":"1.1.0-rc.192","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.188","@leanup/cli-core-format":"^1.1.0-rc.189","@leanup/cli-core-lint":"^1.1.0-rc.192","@leanup/cli-core-test":"^1.1.0-rc.192","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild":"0.7.22","esbuild-loader":"^2.5.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.192","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fJogxV+5hZlCXsCmKfNa8+8bNELFZlGPobgRMZBf76m86xYcwvDOttIBbnkWiHcUXiKBwoKhNpwgUX1J+huQpg==","shasum":"fcd7f38e1671306f9791c934944e4fa4764c4eba","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.192.tgz","fileCount":60,"unpackedSize":748076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxbDkCRA9TVsSAnZWagAARYgP/R+BQaI+u6p7nYgmFVD0\nmG2/Tl23GOXjlj9OP19YFeg9XGXLFBhb2QcjdKxn9R7nhiwAkD191TQaCNhs\nj3huTdm8DEnWHdl38kyVHEpHArtxnHo7peXH0yujQmKP4gPdr0ffNXVW53ma\naCpO/2ViPl4PenIkmmL0PGKfNPXZwgFWOtykoLCPA9f+YMif2kgHb2TxUIVv\n1Joo0q8HkExByk8k4PYr4OWZ1H5/2jA3DH6jgeZDqDWbuglW2DZBDfYN1W9f\njaw3F/Jdu2D6bsPoyZQMe0oHpOhEzvSmbznao9FWozcFVhaWZ1RJvoe+uMZa\nuL/7susX52QfrfukeUPU7JKKwqojjlZ6vO8yrFLx87I3SaytnYftawms8G7F\nbhtl+vJm9dQQqoDVpPNrb+RuQqClJLI4n8oMAV2oDfXW3GiXeXVSSvkgBfav\nxAQPmX558r+PgbPfRr9Nm41kKw2PdQeak7OzK2Rz73OcQ3fX50wcC474cVcF\nyQrtg0zFN8GXuBRZmI3flRldc73AYxPRigLJF7IAfaIM/IGI6MHuYbOYiLTQ\nuQrb+wIdzvaRRKte+NwNaqmlHhBkR9RsJmyZjLpCzdLeWAPUAA5j4oThsBxs\nIxKcp7oQygsgJgsLeGj9h96VE3M/25yMZIvLj4RW9LMiryd1io5l95zzzyT4\nQs5n\r\n=cFmd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUlmxZX4VT3zMcjM7qjgb98sPHvaNiA04iDqzFi7ABLAiAYnz+rat7Agaxjj2J6tJwqdmUtvygbREXeNliZibytAQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.192_1606791395916_0.5125201803902077"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.192\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.193":{"name":"@leanup/cli","version":"1.1.0-rc.193","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.188","@leanup/cli-core-format":"^1.1.0-rc.189","@leanup/cli-core-lint":"^1.1.0-rc.192","@leanup/cli-core-test":"^1.1.0-rc.193","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild":"0.7.22","esbuild-loader":"^2.5.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.193","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mMYa5GCTzkWseyXyRa4yP6qcmbmyWcSq5N2uXMXggZmj1s6qxPJedt6/1JqOfpu+Psm0DadTKCazgVWifXVbsg==","shasum":"bfb5b1dcfefa70c54ba6e46fe68e719928c37cf1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.193.tgz","fileCount":60,"unpackedSize":744053,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxrqICRA9TVsSAnZWagAA9GAP/1AawJ8he0sKFEN9wi7T\nCca9BianQaoOZ1JP2i7FxUAnJh13BQjxuvHTse8JuUVEfXXCQeVo5/Vfk8W/\nP+hLEiTdxWHsvtv/bW7fg8BTOLCdjiCYJasrC96Hdi61BrMBHmGtr6PlFR5d\nXIa1SQg0EGfh6DsiDHSHtU7esONAIR9dfDQt0r1F9LGrfAzsFU9aDiuLSuqb\nKGbb2U3Eg5+xKBSJ0jWQzDvgLYeAU/xjGc1UWIo7OvWhpVJlguZ34mlk5cil\nzaDm4YDpT70SLWVM1MbmBr6iKWs9be6qlOEWh5wX5T2Qv3CieIeg+AiZ1kWV\nRFiM4vs/2kbeHWAty+PROA7uN4L5ewIVng+62WR1ot7tIY/9B7KEEe/u+bzQ\nBGbg7bLWpIANczbylKhdFQTzW35LiP/VkyaZxmWkbASplHdo5Nh1CBOJmC9E\nGhNb8UinWoaVF56JrVmqXZB8xAa9lysgxtlTTapSsPpV9YECzJ0aLa+Lje3X\n33t5hy8ULzijYX8puHnMlaYAbd4ewY6rClA0+kig6IAecmlICZ5C2uXbApir\nC0oAfW7nmR/WMTC1qrC6rtT49291TL7s4JnayZY8gGmGEuJnM6Y3XJh133Ke\n++cGL81uqPeBN9XU4UK/ZSscTMm7Z80iZspB0y1F/TE2ASgcJlDtPxvo1+zB\ndgnT\r\n=Z6q6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0uJuNzDuoU+SweyKTHz53x/c2Hz3+2Oj2XmTyxRH8uAiEAgWy1wDStoNuMATnnLC6h7bIN0kdrN1a4VxSmbsNbYCU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.193_1606859399519_0.11190898601475174"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.193\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.54":{"name":"@leanup/cli","version":"1.0.54","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.7","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","@babel/preset-env":"^7.12.7","@babel/preset-typescript":"^7.12.7","@leanup/cli-core-e2e":"^1.0.54","@leanup/cli-core-format":"^1.0.54","@leanup/cli-core-lint":"^1.0.54","@leanup/cli-core-test":"^1.0.54","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.54","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-PHywIqUwVf30De1Zwe4HGTGPNWh7tSFO/UUw3gMy34zZphHJecaNjdCDfTcZdTgi3PEhm9HRirEpd6L5vOcN9g==","shasum":"33360791fac9f43e911ce8324c00d9937300ff42","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.54.tgz","fileCount":61,"unpackedSize":387504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxsIqCRA9TVsSAnZWagAAxg0P+wfO5FU78MAMjU7BNUPn\nbLRkZMPacBugwmGjv3oUonBZCLF2TWRTnfcOGWNZGTn0la9XA9uhau6Key7Z\n2If2auqtBe9s3uVbvXeCF8gVXvfNyyyEys75w9NOkObQtoOyZypPcF6FsJzq\njQqTmymH1H2Bg9xJXUzam3OnG8v0pwNGD3fLYqCzwjHeXh1YqWh7UsEywXUo\nz4Fj+STivXmYxPzCH2N07qmhiTCMLDxb/RQaz6Xcw9+EeCsFmKmFV9dQJ6VZ\nEL1dt04jTdrtZ7aiSWOeZjI+sSQCyOh3ilj6qmxaXf+VZORH/4GbxgdOzzGR\nXtJqqZo1Iq3yuIszJHUIecVbBELbogjmcdv62MTU1T5q4PR6XWrrIOKdaDNA\nd5tj8sy3uv35a1vjNAvpPy3EjFYUmeLuz7NWGlz35ZCiQTbbxouu6iydgvmy\nGEU34xY69B+4EGJI2SuYh6/OCZcB5RRLNcwYHOh6K6NJOl6Lj5ydSC/Df3iD\nbYHdPlNx0GxG3ROgNSRi0V0IXC8WNHrMc8ut/PYXJVAda5refo+H4hZCyTTw\neVUbzIw9qsX6AwE4W/QLJTa9ThdTvUEuCn/VBwS/Bk2l7WP0ifzrM3/ESDfE\nYYLUTggCPtmBVlTuE+bf2zVvDym1/U6ldn1+DZIX+aRmleyjQ03ZLt4XDSCK\nPDcz\r\n=BonC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBwRCScmiYiO8SuUc2tPFmyiLIEtPUKPs+0LIKK24vrbAiEAzGbyiSQtmgASPrzFKbs+dPfhnDh8Q6os4+dHOIEFRkQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.54_1606861354200_0.07888314886323622"},"_hasShrinkwrap":false},"1.1.0-rc.194":{"name":"@leanup/cli","version":"1.1.0-rc.194","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.194","@leanup/cli-core-format":"^1.1.0-rc.189","@leanup/cli-core-lint":"^1.1.0-rc.192","@leanup/cli-core-test":"^1.1.0-rc.194","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild":"0.7.22","esbuild-loader":"^2.5.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.194","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oXNiGVaF+ZQ23n+1VDK4nEnmOWxfJ0VLvqj/9EiRlszR96UUQPtabqmWhxPhR2SKMZZOYlmsiFlBNx+c0sGgOA==","shasum":"860fb51b5ad1a2c21687fa450cac28d25e611278","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.194.tgz","fileCount":60,"unpackedSize":742881,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxsQ3CRA9TVsSAnZWagAAlSoP/1V0WMDNn2si9SmaXUmg\nySnqyE2EIgvX496G1MBK7HXK5o6kqjAksjTdUa2hKJrWTaVC/+UK7tz/qNLb\nt0lULAlzO+q0kuFI+n/O0tTtK9lHP0kW7Ub3NCk9KgWldV9pFbQOiKDETMON\nGLeRMyIFsswnkRYOYEpwA9NTHNjp+uyP55zxJeCVcHJB/AuKd/tmjqd32/lH\nkkrYKwEdM94HmYH0LS2tq2eLGuA4eYUJG97BuLaD230+/ESPvqwgRsV+Vb5Y\n+wXfyh8yIV1/NUIyDoFSSi+4sSYOfGBslVXg1ms4G6sfY9fJUG3CbTcMU5e/\ngSnFwgNePtIAH9862lG4pdMRR803SdbERtD/3nC7lsJojY9ZdC2PSIWwM7fD\ncTRMNmcnnZOQxSAuw8+6ZgA9grDFXsLR8SwDt10w0rNwI6vpuWFMV2KxTwkm\nLIv54sFzM9qkt4Mv9VntUAx4gDHpfx7ngOn2NLffl+aYvoS9JHtk1bplK4iT\n7nnYy2LG38fdoSvQhcErKT2kpyfiJCl9HrBVoT3X4++AaBQOH4SrYH2vze1Y\n7J69jtRYJOghdB+2iJFgF33LSHjmFRt3rHsKUwSfe2cbL8SJ9A0mNk4VUEze\n/p54dfjM8HH3cXuFQcEXcBKDvk8kMT5VdC2qrZD68S8RGnog/QkPdpXcum1k\nGlFV\r\n=7AWt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvkODuXy4h//GatANP0zpQkFENfEviHtW11P60IqL6JQIgTeGKCE6pojmGfhpk/OiWt71fkDgi2gWwKlwAGymDo8w="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.194_1606861879172_0.05261981516243086"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.194\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.195":{"name":"@leanup/cli","version":"1.1.0-rc.195","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.194","@leanup/cli-core-format":"^1.1.0-rc.189","@leanup/cli-core-lint":"^1.1.0-rc.192","@leanup/cli-core-test":"^1.1.0-rc.194","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.5.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.195","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oL5JIMH4J1p4XjQnzOUjN/ItDm3eNq1uLAUzjvcZcVqXqeLg7mhWcT0aNA2irYLEHyja6HBwg+v/3FgNhxmaSw==","shasum":"cc8973e117b67245c53636f71ba170c7153ff60d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.195.tgz","fileCount":60,"unpackedSize":742605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxsrkCRA9TVsSAnZWagAAqA8P/RECFPib6FO7o58hFTgd\nf3K+6pMd7MRNz2rfPZCMV59YDiazFfpfooCRIdEwp82zi6IN8USFNdOcFwu0\nsRNCv4vnMPfncOw/eU/izxnhOabDehGgyFjCXf9i0o/10n3WFtFWDtaewinj\nYFZ7xotW4eiGOmg+RNyTe8vjkdRWfF6Dlh00KYO41Hzu/IDwiu/f0FbyOLt5\n/xwreIBm8iG6qw5PVGapBYcw9dnxqRr3fKDSUwsB9NYObdtxHkbyyo6SXj/3\nAkVAjegEjCH8pThRjSJCvWB/6t5LCBccc4oSDtYKVix60nyVmNJ/L8e9wiTo\nXzhI4K//4xnfW6yS/43ns0QuB905Uex7efg6aiJhTg+ZoypaYpEe/pPVlz2T\nZgcsZ7r+iI2ZsPeDMDH5kWNnjMcYZsHyJdz1YL9TqVJD44sCGEoCcAuzGvMU\nLwy9+mIQxXX9YYpOJaikb2CFuSr5lQpTvZdofCi5W2TSie293uriE4n7WOFr\nwJqftKlkGtYqQODFd5OlzCM1iEvT/r4w2qloIHwg3XMgkzoNY1SSLM0/K+57\nczLArlNnNwYJ5+hVzLpmwzRGhVvYmpCNewsiLCWN4SJuACvwtbQVzxE2H2Fg\n0UMVL9t4faXD1lyjYE31aj8uK8rnP8nERX9WBLsKyUZXveXgBUjHbgdsrBe3\ncxcD\r\n=VLy1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6iktz/zCTAStRo2CGXjx/wGqEQw5e9wOi3pHueOcpZgIgaNlOTfB2xGblGko+c8216gy5xZoS/PzsJ7h8LU0zS3s="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.195_1606863587274_0.09850663236425028"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.195\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.196":{"name":"@leanup/cli","version":"1.1.0-rc.196","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.194","@leanup/cli-core-format":"^1.1.0-rc.189","@leanup/cli-core-lint":"^1.1.0-rc.192","@leanup/cli-core-test":"^1.1.0-rc.194","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.5.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.9","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.196","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UZeRKbDTYnlsKBs7nfW16BDGFUOKaJFbYY92D/USV2nd5HesNCDxporOGgY42MX+X/cStcP7IrOx2SXclxMB8w==","shasum":"b2f33cf717b5a20fb23bd870ee3da33f8bd62439","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.196.tgz","fileCount":59,"unpackedSize":742394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxtbjCRA9TVsSAnZWagAAVaoP+weK/0oB8BsPEmj+US2X\ne/S6hiqi+63y7sagKNjeHC76wulxWVsYKghldk2e5dDki2hniG7gGXb0vEU5\ncEZdloprSZNrvAkLeZFq3wAZGHPXrKmlW9L0JinkHER53cIebJIKE5l6JYW4\nugt1URUTIPPMqwaTv9D22M5bxYXzintdKon2QTlXUgNd+rxELqjDDekgS/Ru\nQSG5x+/BP8N5nKev3jmzusbVPj3h6UDG7s3PRTJC7FKfmItyLnFsWpUZoSts\n6HZvuo8/qAG93cgjVlc8yvyL78C52+sgOLO8IgPkMlwPzfa2dF0BGV7WMrlK\nEfAKytEhtj+mwOx81c2izI4WoWMh1L1PWN4rz7AISGNsdWrsSb8w8ZOlPnn/\nCTxc85WKsbJxHA2okkSKebSD2ZshswoKgUbJh/X1uW/0ujDLKFrCMhNlFe4j\njVLGEubl8d0aFS5XDNj7VWi1rz8vmNu5bT2IT6yebTYbzb5+BNBCpeTUhcZZ\nJsnKi7OHnQDPjxrLbthzpvV4WYAkXVkUlW02EbjEELp0fky+wr1lZS742Iau\n9LOchKYrj6/V1zLpCuInZhUu7sSmNNMsdzL7I4IX+52QdnENY6g/4gKfAflY\n7St9MYWpFoiTikuHMJH2ZGhIhBOGSRCgouBLvALwxJRchSL9yhn+VbHOD8JU\n7avZ\r\n=jjb7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBNDjmAsesDQktiIRlab1Yx0+Nz8gjtvslggF3UaRDg9AiA+qWYsM9oipdYr0gvzfuRTtfcCzUgFJozQZJRiWO4RMw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.196_1606866658945_0.11258026101965912"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.196\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.55":{"name":"@leanup/cli","version":"1.0.55","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.7","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","@babel/preset-env":"^7.12.7","@babel/preset-typescript":"^7.12.7","@leanup/cli-core-e2e":"^1.0.55","@leanup/cli-core-format":"^1.0.55","@leanup/cli-core-lint":"^1.0.55","@leanup/cli-core-test":"^1.0.55","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.55","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mJEMznBZBZ/Z+0F2u/CffeJWAyHh5J37nr47XakRGek2MCqeFnrCLby8qQTvU+s7CiZwo/x9tel6lLarKfzB9A==","shasum":"e3c4d01f418ed265672723194f0669326b5e80b9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.55.tgz","fileCount":60,"unpackedSize":387293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxzVSCRA9TVsSAnZWagAAp2sP/1YyhE8LYBoogdauuhN7\nPT9IpXRJgjIB/v2H3ySe35M96yJAX3k8c6NslBXvhEL/1vrojJqi/rBIjO1M\n0vHBcmmn99XgvhDAtp3zFZv1DmL7wzsd7Hh/TGNb/CEav7CUCF7Yv31DC0K+\nCNiUSvtTMXdaG3m9zZxR4oMQOn9OBMiEJUpeP1lOYlr+cdPW2w1edJJcnNaH\nYIF5ZvDPlW+eMLOdlx880U0zwTTBhcT2PjXwZ/LGd7imA0sIDtao3CF5KzcY\nqSUmljVUYb+VWbUXVoQHxCikv6a5prNDBOPqft6QmLnDxoPPFvNLTQVpR/wu\ncFrhQNwX1p6kOKrxMLesnJSMB99BqP+FqSAK4oQAiSUNQidTYzx2Ep4vJKzU\nW9OUfgSZCXH7m4tSbKwPcHTsjaiYzhgieqRAj/0ZkuKFZ7STzLhNbmek2wfv\nS0QuqpkzggiNofRU5cTWvyKD6AJAT8JHVMA6k4Bzn1X5tm0nL1Xha5vei753\n1rGzWlVWr22PwzstRpP+4ts7rRtnsObot5w8AOuv/jpTBpL5EW7QKmQwLhSU\nJewZ3tJ3AW18jGTorGwOtnZUZvfPBq6QDg6/lNdCtOq38KdpU7Hbh23YYoVl\nvllGB9qhGqZqLEoLifKz2/QoKYm9h8pPOceeLZFk2KjuxAYT+/AHtYFJ2QJW\nGYdB\r\n=Y4JZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICE+1ukkDYf9f44cTsYCWPZdllupv8JflfoT++2nkI7/AiAgcXj1SZOuzFxOXe+s31s4zeSaj/Of7XSCqmv+SKV30g=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.55_1606890833558_0.12084217055051583"},"_hasShrinkwrap":false},"1.1.0-rc.197":{"name":"@leanup/cli","version":"1.1.0-rc.197","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.197","@leanup/cli-core-format":"^1.1.0-rc.197","@leanup/cli-core-lint":"^1.1.0-rc.197","@leanup/cli-core-test":"^1.1.0-rc.197","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.6.0","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.13","postcss-loader":"^4.1.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.9.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.197","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-T6cast2Omh2mSBRvS/r4OQGbu7iSV/f2wjHREKCQWTB1LvKJmz3yzZy7Han0uAGDsuSuXc6mKd4XFMNhT9pkuA==","shasum":"623b224b0aa501856254cf8c193aa908d43df7a3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.197.tgz","fileCount":59,"unpackedSize":743122,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyHFECRA9TVsSAnZWagAAyUsQAJ+nDnIl7lj0O6oFScuq\n16XG4UNE96mlPa75akFTQniwC6VqOM+asxkHJBWwoOlshDGt7HWz08BK01ge\ncHnKoUK1z6AItgNfEiW8odbTAXJdJZe5kVSiSlttnQ6BDFJGCmN8P2cTGpnx\nTMNI/sVOeuOONKLtFdd9X1KJg1wUfN8dk/Ze9e51PpQWOlLnF3RGMbc8f7C5\nEzxgn6LEamXbux5M18ZrGWM2EZPB2GCFdjSlLNuCwLa/rSeB1Q8ZIhgb5e2d\nvSJQYVbsHyF66BPhJBx/UyncVZaB+zKei4cjLZ10pCWjnijeyZYLpGI4j1pJ\nORxW0braoHKOm5yZsEdexQptFN/3ZbpLJLaqm3NBLwCEOi5A0l1zZvL3n6Wo\nxoTh1aVk3K+bdirD4kS3CKPmzawUdKtyZt3HVz1SsO6/DbYH8hBTsy8bnTWi\nh/z0TwyljfhQhrzxlBtdUiZVzK3lAi9rv6Sdl1XmiUy3WjKfrBWBqEuqmBrK\n/cyxC89M8AyqJ4h2aAVFjMoSKfkkXoZFq763v7gKWy2Je86FNsVx6PRaORtY\nCkoH+VRtvdLpqNuAjVZETdKjR/qsx8+Ct9Wen9eJ0aOEVFQCiINQ3+wCXGEy\nkdEJAgbllrJbtokNgaHjs+Gh4i/2zxV/R6KiBy4eFW52IVSdBP/62z+RnQRq\nMxGo\r\n=TUNt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMGcPSYWUIpwqieqkQIyIMaAwlD4QXjhkTZDzU8S6CbAIhAKVryd5p5j73uh7ONK713eRDl3sHrmUqcliotZRlTBAn"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.197_1606971716111_0.15996644734855092"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.197\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.0.58":{"name":"@leanup/cli","version":"1.0.58","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"^7.12.7","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-decorators":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","@babel/preset-env":"^7.12.7","@babel/preset-typescript":"^7.12.7","@leanup/cli-core-e2e":"^1.0.58","@leanup/cli-core-format":"^1.0.58","@leanup/cli-core-lint":"^1.0.58","@leanup/cli-core-test":"^1.0.58","autoprefixer":"^9.8.5","babel-loader":"^8.2.1","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","copy-webpack-plugin":"^6.3.1","css-loader":"^4.3.0","file-loader":"^6.2.0","html-webpack-plugin":"^4.5.0","less":"^3.12.2","less-loader":"^7.1.0","postcss-loader":"^3.0.0","sass":"^1.29.0","sass-loader":"^10.1.0","string-replace-loader":"^2.3.0","style-loader":"^1.3.0","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.9","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.58","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-sMFE/YpvRt8KYg0S8kfrlcJce2wxVWg3rgJXxhgz/qiaoZsqX8AxotlIvY1vk8ldGKfzrQZXraf2zMOcX63iEw==","shasum":"b6abd1e56589c919d9a56c81b19b35bc7b41ecc3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.58.tgz","fileCount":61,"unpackedSize":872349,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyJShCRA9TVsSAnZWagAA9zUP/i3EvxQKY6XdmjBpdW1r\nWgx56Nk7kmg63QTdi2wFAIEby52aTFIZp5H0q1HuOSfN6mzzdojJjGY54d4E\n2F/FrZFP2khTWG+PsPyPCBARZ9ta2rcZATR0rMQM8jPVmACVnUQSNWFmsKo1\nskcQcKwvo7NaoD/OEG/kNYtM9IGmvKrXgD9cRGB7aXZzU9zd3rgft1pQVDp3\nkT5pBHXiPi+A0Zi978vAwkhb4jS2gL7g5yWDjGqfxm8MHMdDpgmPaVvvsK9u\ndwn0EfIY9iL1MELmwLD7JMvIhpyt/29NthgT1Aho2RMbMScyyYBhqc6/RN6S\nyLxwEE0OJOmd91VI7A2GKHY/ZutR8pD5Sdse6qxv8LZJlg+j17vINdBG7556\nBCOX9ks1sNUZ2y70Oa1Jc7r52Ph5g1ItascOE2ojc5hdJZFXVPLxY6zOkKxb\nzIoKuOE6Xq9CwvY69Cl3OS3qGcD8iyGb/8dNuvosrOfNODzX1Q0leEG3Dcts\nCwVPoDAZ4NIZkjar29ahKg9zOD+RyIOH/rQXA5hWU5pbG2t8OX/5O4F1PUfy\nzwhvQpvPqz67Vw+Mfv/vFWnnlj40FwJhwEGIJWQHZiNpjDZ82n1aJOMurOAS\nqdNgy0zonH6M3Nygs5aHlvgqTJNrjQqePjDV59HjBwWUsXM65U2V7fuuUsMb\nXxyM\r\n=CegX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICEgNcllzlOJFGpTu1U/Um2TpG8FMIHOnC9du/iHu2RaAiEAl847vZXH/OtWpLpqaaaZf0RxnJuFgi9sjj/igO1We3Y="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.58_1606980768724_0.8517431313301524"},"_hasShrinkwrap":false},"1.1.0-rc.198":{"name":"@leanup/cli","version":"1.1.0-rc.198","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.197","@leanup/cli-core-format":"^1.1.0-rc.197","@leanup/cli-core-lint":"^1.1.0-rc.198","@leanup/cli-core-test":"^1.1.0-rc.197","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.6.1","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.14","postcss-loader":"^4.1.0","sass":"^1.30.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.10.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.198","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3mk9kqr/6GN2MPa70fJmlBppnTCU7e3MWUBRph/pPSgAABX/ZdeqMMhtG9nPAUa0itIFjPsuvvaSoB7GX0cA0A==","shasum":"b1b87141df1c862d22048fc474ab8c2a53d894f3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.198.tgz","fileCount":59,"unpackedSize":745914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzNKgCRA9TVsSAnZWagAA7doP+gNG3ksEMWxxmqYrF3Vf\nH6m62ohuwAirQs2nYTCWhtz0G9doUH506okiWt1uwEcxj8DnZch9o24SdJUh\nC5aPEExgqaHplADf/7DuLS33h30ltK0dvl0AIZF3FAnze5Zt6O7gWdn8Bj2E\nPqrCCuk03czDkbul07cqSRWw1f0LYW4nPV9j9vtde7I4qoOAnXc4nzpi2+2L\nqp97gnFsjWfAPAnsGsEqcX+oDSbNX/n3ed+TDtlVgExNQNAptk/BpIslzSb/\n4gPa4VZTR+iLAWdcXZfgtnQL66iMn0fvn/T1ETT3QmAKezBtXLU7ydA9jhdC\nAF0kiGp0jfoi8qh3LqA2GilzzCFy8lWbHtFgCqqj9xaZzxujfebQ/jRpp9QZ\nDVlDOlJsv7QYXA3KLWl0/KJQUBIELYnEtS3PegOj5SeHuUvbkad4Lwf2a/PN\nUns6TROjP+3m4HI0uNo3nlbSA9RSnurdE4hzOE+j+Fc33xFYq/GPQoyM/qZy\nTk8sRPtUXE8M+Dd1d3q80wZbEbhcPICl4UBUrb2FX9q6m9+sDwHxPbhYUdpX\nYvjvfHd/QBsR7//WmdqaQqihQ6r2sLASXJeL7v8kgU6oBwKfbWGXpM8Erant\nKTAemNMzZ3WLovHCNxJxelN7beJ/Xo6aUDsL+JCNQIwwog8S1b1IXcTkSkIM\n7KMQ\r\n=blcA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEbDj4M9Tf8lfLB974iNHwLc8LokvqTYCyeYByv1HDLdAiBFUWGZ2pES4dCQwlJquqV9a2y1Dy7K24VaVxbGPYbq8Q=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.198_1607258783527_0.6493215990204781"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.198\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.199":{"name":"@leanup/cli","version":"1.1.0-rc.199","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.197","@leanup/cli-core-format":"^1.1.0-rc.197","@leanup/cli-core-lint":"^1.1.0-rc.198","@leanup/cli-core-test":"^1.1.0-rc.197","autoprefixer":"^10.0.4","chalk":"^4.1.0","commander":"^6.2.0","copy-modules-webpack-plugin":"^2.1.1","css-loader":"^5.0.1","deepmerge":"^4.2.2","esbuild-loader":"^2.6.1","file-loader":"^6.2.0","less":"^3.12.2","less-loader":"^7.1.0","postcss":"^8.1.14","postcss-loader":"^4.1.0","sass":"^1.30.0","sass-loader":"^10.1.0","string-replace-loader":"^3.0.0","style-loader":"^2.0.0","typescript":"^4.0.5","webpack":"^5.10.0","webpack-cli":"^4.2.0","webpack-dev-server":"^3.11.0"},"devDependencies":{"@types/node":"^14.14.10","@types/prettier":"^2.1.5","tsc":"^1.20150623.0"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.199","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TGEMky4YSgBl6AVb8bb+7u1/7J3T42uQ4WU/sxgr8tP09E3+zeGWecD2j0ovEJsYN0ZsAggYZTSP+DCGKqVYUg==","shasum":"0dc3c31d3c536b2a17d5dba55003540f49c7641c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.199.tgz","fileCount":59,"unpackedSize":746218,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzdltCRA9TVsSAnZWagAAWk0QAJBO285/7th/dfc+Cj+I\nZxpOv03+NOJmkqcg4q+D6ojQsMar2sMZRF0yzf8u+icOFDyTGd6jrNLjM8Pv\npu1YO4GAh1rC2+bNy20Xn8e2NgBvGaCvXmt7RrRwqgCLeOp/dvIfSaaxp0oc\nwUg7iLwAhsB7ed41fBZuj2eUEqindYL8hGwQXoWF8MgzkExxd6RjiLL3hL8p\nxLMN3Bbpe4To+zPHEbc9s8BU4TNRzwUIDrvp61a25BJJolKqfOyf4N45Q3Gq\nmQYPJyIbqcZaa51l5pKcv7k8nhT76Oys/hkuCz9vIf2kRqwgYogTv4vTo041\nZ4XsUmSMfPILWhyVb9wB0KvI9jCw+a3zRudpSEt7hl8eFDVh6zo21drTf7IV\nAywthM9hz/7NwbeWwya4NPPhqYQDsV+Jbd0GVpfGR1X0opdqkVXtUvuCWcG8\nZiKS7sgqjiITGtfYmwQg9TX9VkivFk11Y9aTMv6TdJwoexuU9g1x4kWTd/11\nyknkiuu6L1+CZsppbh6FXXHP0eA50kPBGW2hXASo0qv9bX57NIfG5KBtIHLP\n0FLMD6d7I918ekDFHAmsWE4wqHubBt+dISGHR12UgbeU/7fSGiqzD0CeU21A\nnT268tn6vHdDUs4fLUXx4AZkhlPXv1PLhIAmvZQT0ZP671i0V96asPWvlasS\n7cIc\r\n=XHXg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAXm5K7OpOnoGC9g/G3OC18eRJg+d15tXmIWUAkYTNyUAiEA+tl9e21uznUrfbVmNjaE8P38j93yriBQ3U5p2nWIyOA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.199_1607326060899_0.09415777479582976"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.199\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.201":{"name":"@leanup/cli","version":"1.1.0-rc.201","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"@leanup/stack":"^1.1.0-rc.200","typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.201","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8zACvY/TA7lmRmQ+Jlfed7YmMmL0Q2P61XDyWTAHJ/PZLSWxJPHflL3xG+CZFjhKhP6ZMaYHEQp1nDUatpsBrw==","shasum":"a8c14d5c263b5433b402895ae324e873026fc355","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.201.tgz","fileCount":53,"unpackedSize":376196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0AOgCRA9TVsSAnZWagAA8hEP/jM0TnNUyNp7jO7BNg5X\nZJIYcnd6y/Tp4liNVNgOtCwBG+bD+rpx0QUYWhN70nVLFlwSiwQkkmAJ4hKk\nqMP2Bft3Gm2YUppkW/T75sW5B6WjtzBnbBCr/TckXgoTyzi+FkfERecyXutK\n7cwQEDE25Mbl88i5bsfiQnvYMFdeqnTx0NTANVXulwvA/2E1j6NkO/Zzk8dS\nQ7TAcFa03SNyAOd4aLDhzfWftp/Iv1pFgmYuIMYas/RvzCikE1TIxPHLXRXE\n0eAK+OCMgU+GJolPHnkIAFBc+ECbaWgXyWfewo8fHprMcS0iR87mQi/XA9Pc\n2Ya5YRMJ1uf476YOM81OWHVvfG7lbiDBQ+4p562e4CVStofjH7igOt+ZlcE3\netWc0OLCZ/Np8KhSIgJqQDWBMTDsPwr7IiOJrKjcZv8MDrmPXmgh5Blc/RPj\nY53rxv/ocFrCt5GceBN8Frpv400nZh3bcJvzBIFl7vkYkIldAm4/CR5touuM\nL8LDb0rGFVCHc8Xs60HXTSjcODzGEuN7BB4tNfX47i7BKj6V0Wyivm8kGAIR\negJ48Sg994d6fymza4OE6AMb+EqcDG6kqbuX3jT/IzlsvWGxR1hs1aAvdT1+\nplyVboArguUHL3odMP1NhSXIw2q8BgkAP+Mtrc27cF6Y8hKY7XTMxcmVDfTV\n7OiJ\r\n=tMVg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFVgXOyhFuBMHVua+vbP8il2BxxnE8HJxxHJTnibmCARAiEA2WxateqVm/r7zEKcFAiEbHlSRibrVEFOXg/lC1qLP30="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.201_1607467935641_0.033459125598925166"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.201\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.202":{"name":"@leanup/cli","version":"1.1.0-rc.202","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"@leanup/stack":"^1.1.0-rc.200","typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.202","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-u2FifkhWhPEty4VGngd4GfqMtVIFKu0LwQ0yWtZT7T0N09lbyxOUVAlpwwQAH/6wIk/q8cUTbo50s2hGMQau3Q==","shasum":"2e9b886b419166c2b7b96853a45f438dcfe16451","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.202.tgz","fileCount":53,"unpackedSize":376428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0BJzCRA9TVsSAnZWagAA02oP/j38FNQqUQc/CbjjvvgX\nxx3Xa9X1Fqx0Yo2woxdR5gvP4akDx7dNVOexgqXMU4w1vdHZEMguhxHYdhAN\ndFckXfpLHKPC8nkZPCl8df9HyEKUTe8XcMEjnbkMPra0y/wSKdyNvRUnzcfe\ndKeyhhEOPclRIaZPSgmFv81NLdbdLljKM56/UCXU8/Kpd9w/F4MOkRV7pBiq\nfLCftvvoXK2MoWlWsoa2mighqOSftqFbb5BMWg10lES6rzktCKwoPEVge+jx\nfjiIl3aV8XDC17YEcmhjYvg21kLkimBoH6tGbieKZNDz0FeFKP2TEfReTLF6\niC6CPXCHjnsmBYptjjk70oollphksJ+T/KGjBXPbgETpWRjzB+h7WYsvdAM1\nvgxWmZdS8XUwtN9woSsLc8cbKW2DrB4Lq7wYcCSUyVcIFgP4+WPP8UvvTGsL\nKV7mUZokfrze76g8S3I6jN+C4j0AJ6Nmt7YDxcmX0evdHlDeudUlFkxGvC8Q\n3t/oYTRJUVq2GvoNEa+dJFlvgatnGQAU50HPirFhYBflOVTK41JIF04W+Q84\n2g2QG6IxfM+hgRLT8dgGoJbnUYFeGk1CwL8Jy3lN5BdjMZ331Z4Xhi2TDui4\np9t5VAJqr/bklXYB6Gaogx4mxP/YVU1ZXj5RSUWY/yzWmNQ/1lXXdeIL3iQt\nidPu\r\n=7ikE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICT/zI+56ySlSyhCEsB7wNMly3Z2CgONkesnDkVTWX8MAiBZrWNiN998k0r7vQkQa5yYlIifZleuESr2b8TXGXDGmg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.202_1607471730583_0.42728012586588227"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.202\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.203":{"name":"@leanup/cli","version":"1.1.0-rc.203","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.203","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kgJY6mG6RGA5VhnRLgAolv6DLYkPLjnyiZn9tPlWQparyJq6VuR+xQ3QzYYNLC5yD76fe8EabvKYE1T4XSNKOQ==","shasum":"2b581b1a33e18e2a1609a06f99db0a94f0d00323","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.203.tgz","fileCount":53,"unpackedSize":376390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0ITrCRA9TVsSAnZWagAAtlYP/0hbhxWFaWKoRYsjcW68\nIV0OomKG4drETRR2fmZRL4vbkkNy0qIiupUsQ8q6iBeU1W+pLzaIMUmrg8XU\nnnzmMg0OIpVrryDHnradS/370oMDbY3El1Ka3mRxQHP4BDY/SBvqs8bRZ4y0\n9Qsg6v2e/kLJnO5IFq9knTnVtp1jw9uH4y40YFlfJ5Om8XF+66AMKByvsP9L\nxdx3GTYh0IfxSer+e/UAqOWAthR36mFsgZ8+QKRtdAFnluYGd/CptI2Lfvfo\nacaOhDk0QI691wWvzexIb9ArYCGUkt21C/4hrkDss2dKMwWM81CcYb90hriM\nPzWfrY6BmylgQgYO+KTbrFKCd686aVi7WXGFVeHhjj/RSdOZ52sB24Qyyp7i\nOscxMQahIYgLrBQZGSrv+JNbXN4R0nZOugKnTbsliyEoLFMZnr79NA5Vp9j1\n8p8GkNsOGFLsef4sJFixR5ejnJ5MXMLfQ+k2tqWOdcv48B9rN11nw7CTxrOt\nBB774iUmvuxxqy2KRZ3/Yk3aCi8MvCLtWK601bX2WU3A2GIKzFBTwL0Qd50N\nkzZjRMdMcyqlkzqkr1D5EiRLnfavP6+Q8BEEy5QxF95mIMejoBoQBLYBjrC8\nBZlK0d3/7+nme1A79LT+igvLwOzsSfH+F+8jmjUawGvuqxFenJEYRbgnjCDi\nW+z+\r\n=8SLQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHI82dG2+TvqMslSUCAApeYci21wrohoIN0/EBa2NdK0AiEAhOOdiltHYnDbiP7BcVrxckyuWzStD2lVTkrFSBk6fug="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.203_1607501035335_0.4618583708144859"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.203\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.206":{"name":"@leanup/cli","version":"1.1.0-rc.206","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@leanup/cli-core-e2e":"^1.1.0-rc.197","@leanup/cli-core-format":"^1.1.0-rc.197","@leanup/cli-core-lint":"^1.1.0-rc.200","@leanup/cli-core-test":"^1.1.0-rc.201","chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.206","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Wc7JL6FkZ9pcPP1I3XUZDcYy/lW+ZH27MAy2rL/ZL5s8w3D5SwzAkLXkGRHaIBtTZv8YkaSQxBafDpLgFXWFlg==","shasum":"e74125bf158b2c941e2e06f42824a8ef95e30de6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.206.tgz","fileCount":53,"unpackedSize":376575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0J5oCRA9TVsSAnZWagAADHsP/jATxjk/KIXoXGk6wdQO\n2/aUBWDEihbSQBarXTeircjQGjvNWWbJcepCrBSESEn2rA6c1X0pjesQZvzF\nhkV4CfKphJ0z/5PrEvnl5Dwo837J494wY39yL6AGykQIZknU2UeEADIxxRLt\n94LzFc1HdlDSy2h7OmeSAzoMMLEmyrBBdVGc17TAV5jbm7L3kFehfk8qCSvT\n511Fo51B751LdmxsTA5EdOpM6Ka5AleJlfJcznFCbHmC4V+NIS04AQZbin6B\nNOU/RplNgooNALTwN073U8DQ7Y310/s6uFuz7b9b5smicGO73JTX8Np7oYUZ\nSE8n491owDerHnyYx5b7NfVcnZvmtEx8o85T2e8zsbEI0nQRHdsoRlxkU8El\n5tA+AOlFGzp5iAxkAg2SvMmlCs8xVa0aeNuGEdjEelyZQoRitwy0V7rMhIfT\ndtXBKuchIx48LgkkKAbZY6CcOgM0OzV5F+Ud7c1a5QbF4Q82a3C2XPH9aXKT\nQp++tiqR0cNviu8kfWtsOWYn3wIa0gT127soC9YblWxKub+ETdWoYeiO/KKr\nF7pFas8PFGcc9ae24P7ZLwrEaF4EhH9LRiWjXoiZO+9gVhyniq+XhM77M6ht\nq4EyntilPY5HYve5EduxTqD4kT5CLTI3JvvFdIuSx+pybOxJwbeeTyWxVtAn\nSZnE\r\n=uJ0J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHMa/Jjx5T8MYb08vcs7n8APqP85+qV42atPABqzSeOAIgP2i84Ce93fWLUoohz6MDHvxT0N4IyN+Aj5EgfSIAhGo="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.206_1607507559585_0.8520123986297476"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.206\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.207":{"name":"@leanup/cli","version":"1.1.0-rc.207","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.207","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-GzxrOhO0xaaxp2k11Yd7breFrbuuOKVJeC6zKXEoHhWwTMAEJ4sNzowuRh6/R+XLisCDnMG2FKk2yrFNBkjn7g==","shasum":"a5404746fc7ce55089f7a3948881078476e5de90","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.207.tgz","fileCount":65,"unpackedSize":382029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0K1xCRA9TVsSAnZWagAAdcYP/jNM8XxdmoDCDXT11dEm\nb2qbtFAXTarfIoM9nEfk15TH8B43F8xJ0ySOlf0c8zd6HmUBlmK2Msr2eOtU\ngAKQ3x+BZp2MEvg1PkcEZ+zBYWTT+Eg4yPvlEe3Y4KAtCkUUd+x432+Rpe3B\nOWsNTWo5nTfI3szlD36IQqaArWhMlw+qVkUn12xaFsIqtQCQyKInS4ePihzU\nus1C1HJRdydNL1FceLSggPTTeji700pBTNfXMWPz3H/6gjEyO97jE4JFkCOU\nOhKwl9P0H9cB7ntZw01+c4QKWOOia8ExJ4IVmfJRzF6JMY3qkN2uUiqPfJwr\nEE96wRI3nddx1pcz5TjLj8GKyRJZxS8FTxtAkrKjNRl5rKaSbs7GG1Ik7J+5\n0mtag0HpqzYonRmVqj9gA6T/bhv/5Y/1GPmDegG9H/tldkNn/ML4tuwJNvuA\nLduxmuatUm1HOb35+uLaQhLxu2VpQzORa5tuPq6GsVuSa+ifRndX9jgN6eJl\nGx5uyFAtst7O1hHU4SVV4pwONu4z0GHwDe92lwZCptzzvHX/6c5c2c34uHeK\ngdlhGvDDARJhiFFja9GlOz/gdrNjIMTqbALMi5aWMj2aWQojMfD1QQk3/HTo\nbcuxwPe4rkn/FkCf6rYO30RsRTsAVdPsIQQItykGf0HCGbxKNVLzTIYfrh1u\nbreK\r\n=DFs9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKc76GBU/sq68/0l13ypwEky/8lhzgYtYXOYLgXl3j6wIgPq5eKADy40Wrkugb9LEKFfAmTLhW3fH900235Qd3LJc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.207_1607511408638_0.3352160002913962"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.207\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.209":{"name":"@leanup/cli","version":"1.1.0-rc.209","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.209","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5TiGjx55q6maxnofOA07cg7lA4RXzfD0dChPUC3ob4wB1HAkew7kp79faOsocG3lIGxOqjDHUP1dOsY7B+zwpQ==","shasum":"2b79b8a42ba38394900954d6fa121101eaa55f3b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.209.tgz","fileCount":65,"unpackedSize":382029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0O6uCRA9TVsSAnZWagAAmSEP/0GTHVj3wGWy3/IeQAXH\nvpsx1QjjTEjqoPPUkbwb9CCydDAXxOq3+fQWU7E9gSbcHqi6YYyxesMD31Eh\nvmyLQN+HrU3FQXdBx+IKzLG62Xu8HiGW+awk5q22ATH/bcnntH3xeJ2ixwO2\nJHuBMQRVvTlg7hcqEq+B7IT9kO9VNQo4btSx8NQLU472vifEbKN8sLufjr9N\nCfDcIW/w/J2jjziBplXfCI3JkLmrqLmL1TnaIajttNOZbQhKE7E7uyoQOofz\n7ICd4gWUpLnjva4wiGlX17bzc4Hgo5rgg5uxSWKItayVPCN4Xw2ynopARRdE\n4wGu6oRYL6e/KCc9A8BNigi5z1svw1iCdRtWA4XdBi1rFgcXj3wCBKkgFG5D\nJYefR0QZtq5HfTWMoHbzeTr16DThSc/GxsR8k+GmSRvBgdrAcVAE7sKoh2CU\nqLzk0VCZUpb4T4WCIC3krdARUK8vs5bOZqCZD68KCCYyc5dX+I99ngMStUMt\n3xj41iz3zOkGswLbHZbUU0t3gUBEWVcDVQKaaFWrCOh5TFu53LtVq8H+YgEh\nOlNDR7g1O+i53liMmJwOiniPMFZb6SfnCill3fKPwBYV7qSACTfFNpHAFAz2\n+w2jWd4PYE5xWaZe3EV3YLB/MG+WxKfL8eyfmWz4pInVU0JS9cnRjtZdp/k6\npWAn\r\n=VKf2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+AkDghYsXKTvYzAEoJxBd5ZK9z+FHVKEEtfNyR3Eh4gIgJUixpJWYuMKqe9bFhgqAqfZn+z0cv0wZPrEKox7g5n0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.209_1607528109637_0.7073280181734032"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.209\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.210":{"name":"@leanup/cli","version":"1.1.0-rc.210","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.210","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DRInpOA6bsFh+gkppDzR+Mvrvm0u2qViCcZYPbFUPRE9IX4qyVCCcym/jboFclnxyos3KI8CJ6S/cFN910tCvg==","shasum":"4684e713a706d90c123089237b9adc3b3bf1ed3d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.210.tgz","fileCount":65,"unpackedSize":382164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0QruCRA9TVsSAnZWagAABVkP/3viIVsq0EZHraKRm0fR\nIELZAkT9V1E1VZfZrAMM70FcOysMDKH1FZg4ZcFwrSblrJb5u7aYMYADIPOF\nn1Uu5z0XiKQnsS2dNo1jctyAWRoK6plrrfrhF+DrHpnx6iDzi/ecI033NjVa\nRyrMYAZxOdkQU4u+SesPCExyfztSOpixgrYhsRGABfvo6KTdeBjzWy7sX+gG\nGkq6oIKoaFzPdcy+qEgQ7NVaf+T47GbxNIwHZBhr+VNG932C9wZPnBIoXr8Y\nuR6i7yJbGg2r/NJ8mzxKE8P8aMUKPD0gMGU6dAeitwK7gcx/tuvgsmEkA208\nniob4trDpOqaNorckLAlpYG9kkn4EsKRMK4sUCC/H8f24c4VLxofRAIAKSRs\nPE26SXSt+Yzk0TbQoswE40PsrtgT2C7JG6NtOdml1R9JvRyV7MouJfOkNUcq\nmw3F+c6uO+xJnD6dFoSeKkIEuQgW46sSNm/02ki5QMYbFHVEd6OWfSqRTbXa\no6CG7EB9p4Qk5fiYc18wzvt78geC67OkRbmWcgQq8ly95vrXwkZEk/bWnY30\nDldwc47d4cHT5IBcSy8ZiXi/1jupbffk/A41zVJvcx6JGosp2kLMlvqpu6Ki\nVs2Toi0TlTEqYTVKcLoRhsdRZT4lUpdSDOD1QLnwp64VCJZUy5wy+TprSXK5\nGXR4\r\n=RmYj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKkYbwVtVYXLR4vZmHW5eUm9jPj09wxZ9ZbhpDLEIEdwIhAIfDyLQlPKYwkly5sQ2vKuIyuzwwrWkVid8Z9mAPz6Rj"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.210_1607535341357_0.11588979883328476"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.210\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.213":{"name":"@leanup/cli","version":"1.1.0-rc.213","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.213","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Eu7l54qWFiAx59L7RUp4ilOHJb0qrLBygGe/g22xJM5Mc1ooUHXoaLXS9TsZO7JtTsq/Y9Aeoz2Rzzmqsy3B0g==","shasum":"cb9c13b85d5374921046fac857ae4842cf88b772","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.213.tgz","fileCount":65,"unpackedSize":388102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0f5GCRA9TVsSAnZWagAAOV0P/2qJV09Tc+/BjGL8VP+a\na6o5Fk18Zmzg0Cix9HkZODYvcZD8WMvJ7a4PUUc9C3ef6sFbCuDhbnHqeLMZ\nTthSZYtiTZkcSxOZqsj/mO8euVm9x1WJw/LKD0Dw42cTv3xIRkE/xgrG0K8d\n88Avx/Ug6A41DfJjOHmKaFEM/jf++9xHxuBTUijaTqM88hyqROG4VAuEZWO6\nOCNa7wffuC9kfhkD36Tmvi0fU85N2TqAt7dXiGy86UsxK5/j2DgJcWwBU1oS\nQ9T38gNrquPZmJuZvujdvBQucu07Ca6n8tfgS64hiNp/QDq6skP0ZeRjNH3O\nXbKVjP4C5/HseRUU3G1bha2fjXpcDR0i00B2zW/WRxCwZfGA/eBKieP/jhPK\neaJb6dmFBIyMIIFCN2bqvLo/o2SIvtZpQhPDsbpqUy3lS/OY1VGdatKU6s+i\nW5DwxeXj/OmS9GZD9EmMAh+VdET9gpjlEF+0HbH97MNs1pTSMedaoo+InikJ\naq6q+SM4YunrXm1lG2Kgzx1kOrgc0+PwILoQOn9SBVN98b/vfvgf1csIVrxu\nAojLVpinHOZp30J4GPGNDD5ILonTbXoFWyqdHhnsVmbmndPVIjye7CPq4BPZ\nEjWMEtb93soGIQu4UaBtVXb87s+4JS3ggS0v7s3wLsjx9F752da8h1M0IG0o\nFx4Y\r\n=iTpL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGE7475NeQYVPcgB7vzZK1NgXcvfNlR27QQrOC0OSRgyAiEAkA23dlRwFMhkCLuwaYZ9v1pno66Nns4+qy5YAYvF70M="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.213_1607597638120_0.4680430698614739"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.213\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.214":{"name":"@leanup/cli","version":"1.1.0-rc.214","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.2"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.214","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aH0ubtvoCClS7tJGojeuCjlyl1rAN5Qz9gjc50DOj3bzI9asEJW96Mq5xLYGFYix8rv8CbF83s1zZc8lC0El4A==","shasum":"1250b549ce4b52574245538849ef85a676a3ac01","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.214.tgz","fileCount":65,"unpackedSize":388064,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf03LTCRA9TVsSAnZWagAA3dcP/iEKRaSyhfVpUeKwgWFB\nWka3QUrELp0XdK2XepPmBHXI4n4a1l90QwSpnrTy6AqKbwD8fEUzC8T7MKhY\nrbPuL78d5n4EiVZKDucoi+mTQ1Ic86UauR7MqGgo8/db0ES0XGN2jAtXpbUv\nAKwRk1l2O/AlHk2rwihBprG2IgVn5M3DNk7pA0j3+lA1RYIw+6QU9axoh0lh\ny1e1fwc+BnPiT2bBhIIbAJiQ2b+Y4t/DBUriuEAwuqMWQ7VjhgZ5UI5iBTUV\nWOI0QBQ9/tnwMH76IXK+7kucY38B5cpkO1v6gtxU0jPgOCE+7qBe7+mX0O29\nMQH6jClo2wWgyp0T2WWVNmHJZwzRS7HaPGQe98VWYGBMOCexgEjJM37JUlPJ\nFl42OhL4bD6dXDrRsDKo1LdNfj8Ebkd0crt+O7QQ9NXzZRH4JNpvrbfimh2x\ngRxGJCOfgDILS+c0pnFirGqbphxnMdYR9kKRj74JkC+Sr28ohShxTWJI+xr1\n+naU4QsxHSfUhvOIqkB6yiIZjm+CBehWwuKTonnILGN5tRHznvEFFNme1eMb\n8rOKcajs6yzbqDz6F8FoKyaDrHorO5R66xyyP5dmZq8OaaJVD+rSX+sl9zO7\nGM7Z0dOYan7iiMTpr2r1yE/3fQ/zTLgImW5Apdo3vXF74fXgBN1kfBlt1UJh\nzQ0Z\r\n=S3as\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAGoP0p0iZJIkJcgRebpjCGsLwvYnc4iB9WO2bLTBuqRAiBGyLRtdQfoFRXLg8QdWWYr8BV3wAYinqYdGLT6O2vyeg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.214_1607693010940_0.8191352991080341"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.214\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.215":{"name":"@leanup/cli","version":"1.1.0-rc.215","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.215","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5qmAt9ID/j7RgPu5Rsm4KiCEoIntNomKUTNV4HBn9wU5gS/gOcGuP7i/6fD4OQ0G7NFc8B/1pfd/ACxSGAvWKw==","shasum":"bd7cd0a06ded67232b12cf1042eb062c71a4621e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.215.tgz","fileCount":65,"unpackedSize":387909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1VyBCRA9TVsSAnZWagAAjuEP/39bY8YEmJQfyg/WlEgw\ncgUjt6spWfs9sEY+XLMbenSL27fxkMy9FQEMgh7cRnK5m5XO7Ad16wrOQn7D\nmIVHC8pZYadF2N04x3Ln5dRFMwDDZMPaSIjOZXFjuDfSr0z3ESw9bD3CgynU\nc28IsaEdmdfEw97tJbTh1+k5Dz/V4z0DCncfry2KEXkWGG5l0UhYoYt81VbS\nYDrFoeWK1EiT6w1rEBXMRc9EGWujtMotH9/u7fcVW33y0/ykQOwYN/O6H7dd\nhRRqDGGxrJ+5Q1jrn5hZzgAqXI4XmAvwo7gvx2u1xTNYx1sdRIxkClK4asEm\nDbSmERyqCT8lhR6QLOAGj1Aj/hh1L8u4O88JD+PPPFcvA5GfMXTujWFO4SL5\nTKIIF6RWBpQn1a3YI4wpzWa9I77uZ296Yu5+gGuBWmR+D2KatX56DOLShDpe\nFGYN77GYjxNcD51+uAzydzwpKiwqX5NTZgQ2b/kflPm9aHRkUR2pIJoeaVzx\nK8jEjWk5kxl8gA32douCP8K+jP6IEpDKMEBgYUNnX5xrQHYbX2nSBktUkNOc\nxaUvKFq90tFR8jyrVShV3MYdZvqYx/r2C0qEAlltjgm2j5KjpZiDSrX19iP2\nj85VkFFIwRquzxzOXzNYupUX2WFR0wffpA9L1fu/qEX5Eab2gbW33pKqA01O\nJFZq\r\n=NeJq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFfpijmuRqJie36s2cLMYE+cGvRop4AyiQjBGjkYrEl1AiEA1ntvE1KiG3kDMOjx3gxQDR/NcBjjIbWcLmU2O7zG6vE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.215_1607818368713_0.3558113057510308"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.215\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.216":{"name":"@leanup/cli","version":"1.1.0-rc.216","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.11","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.216","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-B8uI5KAnTLvops1h0nh3C6yUNb5rMvT1S1tWMBJspWY6o03fLooG6UlCsaPxD6jre4dvHkROlUzwRNBS7ccXKQ==","shasum":"a46138d8d20b2422543898c083e15d66e16a6e8a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.216.tgz","fileCount":65,"unpackedSize":388035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1WK4CRA9TVsSAnZWagAAEJQQAIgvdnm3wbru2O24tIUq\nIUsxoZbXwCxAgZk2FtXM6KEmPGKRSTRuifSOPX7nFgwArlCkm79KzOoEYGfd\n2UdGG6eyewaQo3m3YaSGqWFHM2zD1PaBYoHldH4xhF/6JFwo23anfoxgzmuc\nBsMCncM4be816MC1aKbMIeanW1HvKpeda6i5Jyr8lDiwNFxx9+y/2tv0NgJA\n9aK/60nzqLfUtRFK2HWmpJBrzZ2Qh7ylaLFr7z5X3dRpCd1F4r1uFGa2y5Vg\n+dTp9PzMu+pjn4lps5/Kxrx48Xm2aDG3yaySsyBw2xoHkw5Op81b6m+nEqhs\nz+HW1UAoMVnvCY5ND2iNxvIAI1fycKLvXZ/8YnuFYmv79oRix7TOiSa4Xj2Y\nuD6q434nJFm1N8fxpg14+IFCNKW8U9kbfc263GngHMX8BeaqC1DoCb0IrGwm\ne3B5XJMXwrlt/uxQuGHrBT0JuUnn/4C80WbdlVK0c7q8OCVX5gjN8IaGXrah\nwkcV1Ttt4vt3moAk6jzhyUQMQqAmmygmVAbqhUlm8c9qs2cVgQrRqmOk2KmN\np4hBBTEBhVnDpGGg92YLmpzHu2WqZ3n3dzGO0rg9DKlPXLFBFmMqS4Gzng/N\n+NJRTMdMZZpe5W6HDWEY3XklF4CnaDIAmr4wO2pWbdaCwX6/GBT+1M3H9Xz7\nmRMn\r\n=dyK1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB9JOzNXS5h8Ku2W+ykFGYvYVHpG2H1UPqyL1AGqOT+UAiEA4Z28aO0KO94RsJ2FIakxLaBLEAa7Ec8K2SAXkXF/NBc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.216_1607819960353_0.8244458319717558"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.216\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.217":{"name":"@leanup/cli","version":"1.1.0-rc.217","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.0","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.13","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.217","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-veVxMg19Wa6zWfS+ouzcIR6fjvf3ZOdV/7+AKn4brQ1cY39DDlmIx0OuLOCBXfZK1x+P3+c7dK31RBgF/cb9Kw==","shasum":"4e7ac56d56eb50629ed0edf58acbebc950854782","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.217.tgz","fileCount":65,"unpackedSize":388035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1b8YCRA9TVsSAnZWagAAI0IQAJZD6FWY0uWeaJPfHTqA\nmWkE24ySyh8RYezOA3pLB7hb9Upqs14OoRTZCmKdOtvCJw6rwsJ1sWcKXnt9\nyVzJ961XkgkMPn6BXgJR8zzQ80ymnAYT22hAhHTwccYJZ2/ZYEcx4O7Adiun\nzaVpPj4yyfD2PHIssBVmkU+/v6/abY1IgcSR7hdJBJeSbuoVUuqXx5o+WCDT\n1c99OJY4CF0WZJZTDHWLCTDJJiwikugbqcGWMsbsOT/+Dg50cFxVZ4FxOpbp\n3PDheYjlZpJOPTsQr/4+7xucSYiBcu6LUGOBC/divS+CvSLA3eJC+ooNgJBq\nE5I/gCMI7iY/cquemoXPiuqNIBCA3vz8iY5q8KuJMRH8xlhmEmuDtu4tgwP6\nqeKGT6AjpXvqj+LuTwaT0tJ+ISvz1MvTgHLaQWL/FZdJxagcVXjgioI32rRc\ntZIjjw3tQYUaIz2iMe8Yh/YWsqgy83u+IyJyLDFQWjBEDZonblz3GE2WxEzu\n9HMf8tyfffUzZLB1sLpDnTsn2ZfWpWb/RR+H1AG1vHZDF6i7Lf972/Ai+/4+\nxyNWUrQTDeEbjJlooPXqJqkX4erze4r6hMEuaS2HqQg/QfZzuTC+27m5JSJy\nu22At48vchAQE1BOqkpCVehUFH4/XP9WyypTRhhw0zbqnE/ID2TI/tgUOhbq\nrS6Z\r\n=Hmqu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQqc2KwplFnpyA40GMXehv7kmrdkdTv4EQ693aV/YkWgIgLGQChh/FXTQVH64n/Q1BDrdudl6pnSgyBaIIVPOZ8sI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.217_1607843607920_0.9857755169198907"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.217\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.219":{"name":"@leanup/cli","version":"1.1.0-rc.219","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.13","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.219","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-iKagNqtNcNBlmFJD+wzduSeZhQklV79Uw67UfWLfI6ytXBcyNX0akSGJkOhGxsbroHuR529SGzzpw6WO6mnqMA==","shasum":"ec2c04f668cb90dfc0b90fe116f941e9f5710740","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.219.tgz","fileCount":65,"unpackedSize":388035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1vTKCRA9TVsSAnZWagAArvoP/0JgeT4uUW22uGt2vubg\nPiZLoDNnPFUa7cEZUCBEXh7HarRoKby1uZB2yFmm79F+jGepWuHnHrwrxfvn\n16/brJxJubBblYzNyNUfRczuBIXc5M1fP7cErFl/Ew88jhdMoRNBEzNvdTCE\nyJUDwTh/9IL0EyV07GKmS1WYN7wgUfl1VlvXl91LS4ccaGzle0SIeO66rR40\nMbQfz8N7/SMRj8F1xh8W0sVT7h1FAEC6ANlE4cSbf0pu+tewgmPv1WStQPoE\nr2WE/ZyckiWKCy31/dVlML+aeSrA0+rsTIqwV4CxJ0jJD8YIXfteZ3f2B0u7\nicvP8lzhEPpkPSej6JFMyXrjs6S+2iJmuZUS7bF6wYCQSev65we/ZpaD8Gg+\nFVQ0FCNl6HXE7Jl+Nk54WpZvrGkf2S/gOLMwPytWqf6vgUOgtZOB76eeIPtH\n7RNIaTcTea1A4BRVPJ27EbAyJFeh6kAk3cTmEv3TlgdYaMjJ8s6omjoQRsGx\nUDh0Tg9RcG8+BUr4zNAU+4Ft+Fbq2eNtEWHrrKBBjki2hJqc+UhabacxxBXR\nj3hhPIOGUOEFMSXjGdmeWIDFRll39puoTaHpLPpCOQKphzK3clGecZYoKdV5\n5194XjTsaiNsWa+BNI/OI5/B4CPU0LWFMeCUoG7ct9CalxeLY0fOzMIiGMay\nIXFN\r\n=8uWx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCP4Z6aEr3qQQhL0SCjmaz2hUxJFEdEAxlR9fFEghnOnQIgLFvG4BG1eF1HzrDyD2NWICvTK3bDEBoAfx98aQqtan4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.219_1607922890090_0.00978370326225253"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.219\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.221":{"name":"@leanup/cli","version":"1.1.0-rc.221","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.13","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.221","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KW9RDlKe+FlSLWKmOMMJm8WiusanvliJbqAcohKQf5Bnp6zazdSH74VuW36uwP9STPCpuhQgBfjkKTfp1frLng==","shasum":"8e02ad24c43977e4ef1ba8caaf5b8c0a63e4710f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.221.tgz","fileCount":65,"unpackedSize":388129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2GsQCRA9TVsSAnZWagAARNAP/3qCzoED3NGb9Nehe5QY\nAqNSPJwC8tho+a044+JfzdFmqzYftn6fRXiTvahJhGICSbL2SaP65PI0Q/DW\nkU3hMR68MAa89XfwceSv28gAtnVq5ynka30vjtf/9Ch+up15+gl1bDHSUfs+\nnbidYefIjxIlxyaZlktauDxZtHaOwIVC0Zhh9CtzjkS7ataXzE1ur5HPc74s\n2SH7JTyV+RitsgxuBXxU4u8inIsb8Puckcy34lauqeZqU3Mbbr44bSw1keHg\nxcTT6wnpIH+JvIRIpknNdgzAWaQZ4lsUwR47f3k8vn0TzInKk0V9zg2pDEdy\nO+Ncq4LspvQVZMmlrouzMO//zIy2E4UEHbKNV5dZtRizbXjYtUx2NJeRsasj\nCCCXtE5cPlP7NZiNhYsnhcgx6GYInSmFqzOzuwvqj08HCcU3JgaNMtjvyeja\nn+OHXrCyY9a40uYGZ0RVlsIeRyS8YCzA2xqRjfPWCGPH1eoJKuz5NQPb6pfs\n+Wk99MunNmozHAvpnKYzwBMW1hD7VDEq33I3Kre2SojeZ8YrY0fupjQPkQaH\nib4nYCByV3fJV/mSpvCbka5vVfRMeCWK7ZPM/wgBvDcIjZvg5pbxJjmQASg6\nRmzWXXJooP21lKVdthROVvoctbvIin2aeL2E2xY1x2MrWLNeurP7OyHVBnwR\nhK+O\r\n=Ug2Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1Ov5N8anM5wfnizC5/o0Ek6H3h6M8qWxee5de+UmVtAIhAOf1bXSQjlg4vyew9d2x9cJAtq8/jyWaebynA6zFaB/z"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.221_1608018704309_0.7771030324340544"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.221\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.222":{"name":"@leanup/cli","version":"1.1.0-rc.222","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.13","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.222","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3IZ9gCaatHJZxdn+AfIo1hBtARBZn2POVCP784lu6GMMHx2RkTKf9eJTvwiJp2mBOIOvts0RAN8aEEfV0SGfoA==","shasum":"8ac76e8a7070c73b7eb27fc45a5087f504fe8132","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.222.tgz","fileCount":65,"unpackedSize":388005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2L+/CRA9TVsSAnZWagAA+s4P/1EsV+Mrmk6TLlJbL43a\n/yK2dCNLIcMtlN8jUjipaNgqhnlzbtQmtJR0NqKJlr9xNNsgGAAj/Rs3sThL\nVBskVsvKbwyiIEGP24Od32gVwnsxu3A+TniL8NVsqsXmTnDe4ZOhOqgT0vPu\nj07pijocQHZSkd1oVZLTPFJU4vhbzsW5uHAmA+oEuGX7T/WiPcBjxgwvo7Da\ngMjspJH4Prbb/77zHaHMYAIjVLkHPEJBbdk4TWdZ9CY5UZ/kCtVfoMDRSgR4\nrNg+Fusjv0FMPnQS74s3j9yzdZrS95Uz4vTlwQ9+dslJI/bMPltOaamduz72\nHy+p94B0C6Cni+LIeUSiow2HxcPOEd1iLT4mOrCivWrgcvyhKcKwwMF3ybp5\n5d7qpesM1LFg83M4B4PiW8o9co/qdey+z6IGZb50mCXNDnjvfWV3y96cKPVk\nmelv2aQuhwb2XNOiFNJxVjOj9hCvstGOlL3BsmhqaOZixKnPClxnCrlDyLRg\nxhJMzDfzk4mXBIZsOnvgfKwa779Ddtmjc5dyT4e4PwaKVRun5vkgFl05P9Vo\nPMltv5ObhyhpNTBK6GHMke+JAMsTPZyWRbMDTHe8AlvQyYSUFfxifwB58zD/\ncWXvliadu2QUervms4Z4spjjn70agqKKiGH60l7DfuNKORMFGtZIB0FMEZUV\n8a18\r\n=40Z7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDSFr+r8tdumqI7FREkUPIGwden0f5ZNC4e5dDb/uqfqAiEA+mb36DnCRLEpsUwrzRwmEmLa6kIsAUNqRgLNN3Uqoqg="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.222_1608040382468_0.9957408112526727"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.222\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.224":{"name":"@leanup/cli","version":"1.1.0-rc.224","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.224","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MQbaHBBqlqb8BHmcP4F7iWhRQphdXQnf79ORbaOwIWXDaNb9iYoabjLyqFnd2YV82fiq/vaCD76pm0ej7RQx+g==","shasum":"de324db7d301875046ead163680f368a8ce26bad","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.224.tgz","fileCount":65,"unpackedSize":388070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2R7YCRA9TVsSAnZWagAAitYP/0JRIGiBMpLaGOQxoUdc\n93P2WnL3t636n0a5JN6S4Wdhlg9BxgtNAPCxtu5R41Ot5ltCqDR47T6/GZaU\nuJssV/g5RpwH982D42q9XfJ4HlxBfNUwKYPNfDXhB1BdCBSZYJqjyO62l6Ax\npbnUQLIy3N5dWIeEisQv/VJYjcZUD8kkr/zlxhHkb3dug2dZxG5+YkAncQ6J\nKvNWjoHZUW9AfG4zYotJsZTBT82fG8lOdT4BbsXfwJid0wQ2/9VLBgY7NhSm\nP9rtOs0pXov5m9IdVJacCwzeB4r26672MVHSfQiSYDtIVueMLZh8yOTGDBzZ\nXUuphM6BL30PJTaqAsMHPgedIBsuFV7nDiiUVllM8SgmJobzOmNnL35McPYK\nxMrlvidzIdqpl2BYsbZL2N8tq8HU9pN9c6QRODafvXz0aClEGOr/aguDh30e\nCxkkkZon7jsPcW+3Vq7krCYQJNt8Cncybn/JhzZjHzdctiIWAj3WV3jWx59I\ngtvYOvphjidVlPLusRtnZmofaGFhmgc3afTdPgGwVNEmIWYX/zwHsMElHn4+\nhqFRa+EpGXZDsQ4/9vRvdUndGbl2D9NdChC7CJqcdZbNLAYSbfWTf3d8iqDw\noAFLODwlyvu0QDx3zaCE7c3pviV0yNVeJ5K7dxagO81Mt40Szlr068Ob0S2x\noS3t\r\n=SrAJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAtGYvykF15/oxVSkV071Zk3NNo3TgrC91sJjxy6j694AiASlKJ1arSIdSh6bddRtAHoAZeRTzPvRqkGYBRhDUgqvQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.224_1608064727861_0.1685277586993057"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.224\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.225":{"name":"@leanup/cli","version":"1.1.0-rc.225","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.225","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-diaN+mKjm1Kb9eUjd2ushOce2dZL8Fep7aWM0/k/l/OidqNQGEWF8b9BMUleUFM4hZJ5mid4VkVaihVoe3fT+g==","shasum":"0f42cbb655b304b886e46f146d476e32f338185a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.225.tgz","fileCount":66,"unpackedSize":389146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2UO7CRA9TVsSAnZWagAANS8P/AnQlKKhm5ApW1z5ZRS+\nqBbG+KruHYI5L6kvuAlNcrbM8/60/rjYaLXAE7RtKtCN/4fYPrhMhntj6xZU\ny1RBEW+rah+QWGep/RovFW1tj5E2HB0xn72MrDuOpqTelxgYiouGWLTc4Ge5\nuyKWi3W/Mhzxqqd/7yOxf7loZlnC79XlvYDeS5J2HEuEH/RGzzTgAqhxYhLO\nmvqhX5qu4MVeOzLZSw1sUCTx9zowQNQe1m7Z7Qg8CJWt+6etze6jBR8Zxb6F\nOl7hGB0l5nmhE2PB2I8z/FtK1tPHf5eKDzE7uSPpePy2qZcJh+BUjPLRW5F6\n9UU1OcOZQq9NYH0sBdpQcVKXmmhkkpr2n+Y8AdySeplFlpTqdbM0Uwm24INc\ns4vX+8t2nmO/akYV7zACVOXZ0xW/cpemGtzJmsgPDRij0eokeoqde0u2VLEj\nCkR+4Y7RLG9HkYcKe7QYZAMZhjDDsaBNfdUgvPl1VyM0VU6dsfYeoran4td0\nAn5ZKcYZRBvFGH0fVO1iZm4yPhqccirdB/G5gCWEn++BcYzTELpYTKV/4lJP\nCNDq7g2auzeMUimFwREodcTRhU690Ak4NebEr82vkFcbO0ltE38Yt0pMGHhN\nAz9Y6IcZpBMWmUdC5wiskmtdXb8lyt6ciVL3FZUP2OWVxGdoDXaCAwuxIvE5\nDPVi\r\n=gvwI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHGwxkZ92k3bbXkwfu3mXOwO03IZBB4F64906WvFrMWgAiBs96m9Mf3aJvQF/vUDDmUl+o05fiLQxjI6xw1HSBWfrA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.225_1608074171077_0.5331755613330589"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.225\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.226":{"name":"@leanup/cli","version":"1.1.0-rc.226","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.226","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IFyf/r2CXzA3H9aK6aj6+SQIbcOCWChBpF+ppeBY3mPKK14wdEDJRHyeO46cE7U19Tn/vqrXsvwENt8VfRtP/w==","shasum":"5c0424d6c206370b3c34cc8222db17d46673c767","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.226.tgz","fileCount":66,"unpackedSize":389411,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2bsCCRA9TVsSAnZWagAAgioP/0Xyull+kqHeXga73iSm\n3Iwg7ixTeYPYKmTIYhx2kgzid1i8x6emrHBPxIDkMEyhJ4ZBfRzXNXLt8UJ6\nWOTlsQteWqd/1226Ha3OaBDhVxGdwfUzhJsEn+CB7BPMCg37TThGCx/4/xn6\ndiRmzH3aZdrXenC18nSPZfzl24JyM0ZymqlFOl4ZM66bQoi4vk5ebDjp7DLJ\nP1dPx5+ySZwqJaJ6n9mQyE1VkZrcIlsGtRP9wvocSs+7o23BI1XCGLVNovS0\nF/fTcb56WXLTVFKPssZo2R7zZB0TlDq3l9Mektt9mgr/5aUu/dG7ycUCkUei\n7fVcnGh1dvuXzUkdGLzvDuyMzL98Sb1Rk5/rDjfGp5LNVkGuuPjTQa5y5Akc\ndjlEzBkOQz8e7sV0zYKWvSURBr4YPJSLVQsdRDiFuFpr3oOAkABfrOKHB3FZ\nFhxEufLel/1A6MWznK5SiBU8MzqEVTmb4iiNaMMpVStX7wTi++IYt+eBN3hj\nzPi2OiTCtANrD6jEFJL2WoGm1+oF5yoGtuJvk6fJVwYp+FZfgQxODOlGINyo\n2T9SFkhvTH0XnHusmuaIfWHMnEnIEPwTpfxsRJ+kc40xbJeIdzkQYxm3pqjo\ncJ7zNX4AYPrrZERWgnaQ9RBYb/X9ceDbdCwHFo9MXVMpwafvfROAkxQGBj5x\nSDdv\r\n=QbUZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC0k0RV1Tk2NwoSscoBKrWRUAzHP9mYQRzKFENhgnyjeAiBJC67FGjN5FFxgPGpzwHSYiw6GU7haGsjA48PYdSrgmg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.226_1608104705920_0.10125516855995875"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.226\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.227":{"name":"@leanup/cli","version":"1.1.0-rc.227","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.227","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-s7KymS4SRYmYLl+lOT7urGnFZl7M88yjxdBge8C8Hpt5pJd0f/VLStCeeEysrchEhH4RhJWeD+gOSEM046Ifsw==","shasum":"8a4e6db9048dddd28a5f5ed87f3aefb2129dd1de","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.227.tgz","fileCount":66,"unpackedSize":388932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2fesCRA9TVsSAnZWagAAA2cP/1kxJpP6y/5RIAVjNdcp\nzSrcb7DaYsxdHOVPjy0PHYG1m+M4kZ0GM69tDmOtV/mJCwiGZjYdvjkKIf8z\nNV2jsZFe8elg/Ni8ExuvKVM+zMtY5mPa0CrwroTXrdwJz02GCVACPPlSZWxN\nNIP8z6oYhx1PfvEhC6hfRDcYHTlF84yEUiFBdyGruVcQxmYLWcxZYKVriocf\nUPGl1LB4E2kHz1saAVDFhuHSubjXxblfAAoCEyHglqCMiSoql66NFs+Q8ITs\na6ZzbL0av1zOgSqrFl9Dv1HhcZBUhnNsWqCPW2K/M7C/+MWRu9165k6xxUEN\nmCnFgH1Y6cUQ8hTsL6cXiR5XxQ2GKaAGDO/TUkknePNGwyA5xDqnWQ/JDKwG\n4LHSku++R4DBlzXwqhMtfjnYWaaFCmbibcTVznzXZXfq2FZc1i+j0rnfPZZi\n9jgF0W0YDo6Xais9/CcPLzC65ScCNbl/xm4gaxKFubkd+l6AzzdZIx/SZJoJ\n9kXz2stRp/wbB4Db80Tr5wFMYRRIZStd1/QOFBrkFBJKgjE/kC5mJGyOVC94\n0Df/NhN/iA7Pg7mFZemkUiB5TSN8DUGLHqpJgi4hZqTEd/i/1dMJIEbkVIeS\nnTMdjAZdF9vzzpv+eLClyTP3dr/TIKLPUYWO7WLQbpLEwgXQMQQwOOfqpHhu\nQjKE\r\n=bdP0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDT3SmPrkFmPO3GUGeJ7WFIXkx5fHIp79rIXOx8bLeNyAIhAJHb6jkpd66/qEphBX6DELKmC64biMkk2IiWRDtxAGBW"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.227_1608120235557_0.49222150969339373"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.227\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.229":{"name":"@leanup/cli","version":"1.1.0-rc.229","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.229","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ZMDoocPP2peNP2nCcmeJm6KuwsHve5AU3PynCh5j99HhJm758K18LuXzegSbLdJbvq2ZS2/6I47qEFoVFVtcsw==","shasum":"07575f7422d1c350b563a2bd041f79d55b0fb7c0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.229.tgz","fileCount":66,"unpackedSize":387443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2hqyCRA9TVsSAnZWagAAUMcP/1uw5HUs8EnVmaUcnLRa\nbiDxN1Jd4wFmvaa7lT57q3FCor5ZhU6AgjgVFdmLKlf4LW3IQ5FImI4GN1i0\nmfFB77ktyS//Kvcw260mYcVDZLIKQg6sKIW48oXpO7VJv3z/YGTeDUK8ezZR\nfV94rlRPg/GEP5lnXNQ7wNGWGDHMtK2Qn6eHoekPMecEnkBsoBbRwRMbO1RS\n3HTkn/mVFPXnAy8jvmhIz6YIlrU0W2ScMXMC/ZZopoGsz1VtlF3RvL8uKR0T\nWzogUkIVuy8SmKMuS2db062tfOKv/dAATogZVCKuKIG4I33KwG6MTwrwIOKv\nRS6Y6dKqYBGis7H0mumV2h1WWgqKYHeJVlpMQqWCfZbbk58Q/1fT9a1UZiwK\nK5LtkHXg0V2uBin8eoe5HDIv6zyRRLgkxh2mPSE2rGxn04d4sEVu3vtjPmVF\neHpdxv36rmlLpxlcObYq382i7cdzs7xaFh2Qr+3Q37b/aDlR5Uf79aRWXesy\nFaaZf6/kHccUqRGipL033EM9A3cGwRCfDqslpoajznL82MczD4xpvTGgZTei\nxi3f737tj7FkHRrEiFBtXsfQstjvKCRAthfQGL9FUE22oJghg1Vq/AHsQmma\n0yMmHcgYbzUWexyj7f5ewL5Qxfmoq6Ek3llVgM4C3jfNfeeBMiQdBcT1G5rK\nL3Bh\r\n=OhT4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuxLsgvUfhRpElBzGqZ/tSERvvWU0mDwYOEgaV6PH0AQIhANKZYmAajWzf6BhSGd9x1oZTuA5z6s3OZK6TDEq7oStI"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.229_1608129201515_0.4495924803892488"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.229\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.230":{"name":"@leanup/cli","version":"1.1.0-rc.230","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.230","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-aM9NkXadFoJgM8HMDsrcZ2USiu8n+P71mY5JD2iefdKOtGcCq4uBGqtffW8jDfhxi38GlgqUfxsdVgkXovvlfA==","shasum":"fc47d15f7ebe410ddefc6b9ee7873c63745fe135","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.230.tgz","fileCount":66,"unpackedSize":387440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2m7lCRA9TVsSAnZWagAAPAIP/jrhfQxwZY3L47rCA3TO\niJTUamgsOczv+/XiM4lhwgj+UtrL+Ig7JO0mvKAWfiNg/K/kLt12WTZh2+U1\nMe32W6q6NQjhmNGMvu3rVvdzyuGwp+yyv+pkx2ubQqRTUb/CBfAYcu9Aa6ro\nnuq8fCqU+I1Vb5K2Zt5qGfelA43zjQ7wFgttE6psJ5HgIHPZam5Ic4ImO+cu\nWXCcC8XW5fp3my7k9Ylr9ctTLn5WFa35Xl1FudqthHIr7qqpDw5lJucbwk71\n3CJGLZmXdngiAn5D02WTV0G/1kezar/nqF+O5P2NJBTVL+0PTvKmT8xK/PaX\nkPvLo4VtAsMb7DUwT7UoFuB0pWnCA9n/r9IT32MLLD8CcU+IseExa6RNSY9/\n/HPR+0me/TH6X0qTzCh8+iOP9f3y4Fg+7qkEdFjDc5pweQ9mHVYpD5aeOzLB\n1qOlRxCmNgCnN5ciQYxClNK7bOC9dWCnZoI417favrcZiYkU+VWOb9WMFM3K\nVSnceJTHjEp3klqRGg9RPpdKguyZnVhltyeTN+czkIQh/tMdLciLtdC4qLW5\ntl67cpi60mHbvzb2oEcyG53neezUYVoLTmXtaA5ps09eqgz9mR3HnV/5UAqy\nRVaKitx/JgtyLQraqHaWkS2sAqCt+MqxUjNxKdMHRoT+hAZnk0oJ+EIVen7N\nP7Ti\r\n=L2Mg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDBifOTE5onu0/FaK1oylv7F1ECl41qSTI5LXXR0+XB+AiEA2gaziqzgE6sMOicAwpbzeIRV6QgL7XfMdVl5MriWpTo="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.230_1608150757040_0.8348336103696146"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.230\r of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.231":{"name":"@leanup/cli","version":"1.1.0-rc.231","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.231","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-npGU/qotsnN3m1RV+AYvs+svFO49I+75NXcS83J4crCug3im6k9IgW9f8qPrPOrHfSWpBMTftE1uDvCoHahNvQ==","shasum":"2bc3593d41adad584d63c6e3f3c02c1b0f0cf894","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.231.tgz","fileCount":61,"unpackedSize":137217,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2oAZCRA9TVsSAnZWagAA6K8P/34wN58fygoOIbR5+Au8\nc3xCTAjU+V7KHCfK0VmRQJjeJqjDTEQSQqh+qjlsBnJHq+IZddLQirqXPFbD\nd9MnQpPpXdkgQeb3f8zULBqZYCieoMnA7bR9Uwz05pNa1sxx1ZVmbUSmflu+\npMhFMcs+9WPDL0Xoc/YWFIy5DaN+swcBBVpITByYMd1ouAlTzazSujaRjdSn\n/n3ZiqOkfUF4AdTogwQreDkz8I5otzXsBjbBxU/zpPCGzpNkOhNBqCgdAEtS\njlbkHoJTwlL2ig0EudsCF9DjOG4OtukfzcroWs+02/ZYaeysx+yB5whjfc9k\nTHXLSnlwBrhUmjaZQ0I7DernhzNk3E/la//M5MFp6xZa8WFw+l3/VLV5O7lv\nkoNnSYdbv2w1pSPj5Do/1qQhlU/8/zsr6u0CjURmd9ktz6Q8tGavzqStAG9g\nv0Skw6+iAU/kFYL5MF55nGlV7RkC884SoG5mZ9TKBmL2nhg5tkiRgEPm7WlA\nykU2mHtrgoda5QS+OFkpuDjJ6hG9DOttlVR4CfILLfCeHhm7VhPc7yz652xV\ng6bJ0T22aOau/6ScgyoMt2YCMkivWxUbGxS3I6CzQidJgcBek55CXmNwsKur\n4TvmxYjJiJEIPYOXhwcStahsNQ8KvbdxuCU56QaAXKxTAmiPx26LRi8eOhO+\npkr4\r\n=8zwB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcK8+G1B/K+CZ7YIb8DWY+Wk9evhXgJbMz7MV3mwAKkQIgTV26jOdt8MohtuqJw8R3fCbuSC4wuuVteC2qXdVnMBE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.231_1608155160529_0.614008592440108"},"_hasShrinkwrap":false},"1.1.0-rc.232":{"name":"@leanup/cli","version":"1.1.0-rc.232","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.232","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pBzKaw7ZZk8y3obfpYRH3i8UfTrQmmTZ3gSyXWYDMbV87Emz9hmpZ+/pBQroyQ/vk+76bqpazuyyS33tHlJgzw==","shasum":"232fe5ad9885d5be88a494d0429b34a9307cd49e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.232.tgz","fileCount":61,"unpackedSize":137280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2oZjCRA9TVsSAnZWagAAkYkQAJeGlXBoWfuuFtzYJ0j0\n36Dsi4rLJDHermm5SoDU0fdEJgGD3m7IttihkGag4qGDSXA9+lri3IUllWVE\nYJ47YjILY4IeDFlHvATho6+OygPRW9jonGK5f1JuDbqfc4VOM/Yq5cEowrMw\nzN5adWMwOwsf2w0XzA9l1ZhzsS3YIMG8vEHad27Ska6QVbojkeNNJSgympX2\nKcwdSBglON+8MKPFreLtVlfo/brvSt65Ai46aHam9QinBoy3sRX1cZBgf/U/\nLucBuKIc2/jtB4Q7eL/YmiAk/t9lgJhe6qJ1IzMxMSdvQW3//s4Ifv07D+Kv\nMzujmbEQdry26VfBTHSFlsG72ZsybYZ3ieWJbxtmzqKBXUTCw4rVK9mw4UYt\nru7BeM6RL0uRUMXdIiLPBO31YVc2ag8evqrS9X3p9+ClMFdCAcqkgkIx5pZ4\nkvzNhzdwAjNAzxT6nwrUs+r4xpNHq6VPuoYxdspHSRf47TL5hah6EhUdTBHW\nLV15Se+2qwDgbygZ8h+6P1nH818HqylZifyI+YGmJR00r/2j91VFZ430RdQ7\nmPNqfZSords0KkvuktEnC/ajjbIS7k/ZV1qPg2VuBPaaVqAjxd+lV4ab/2DP\n+O20EzaB7wduVoafL9ktzHtorSNB4u90NexC5YjlwtxqDzCfDJuny4mJrehN\nS/cY\r\n=E7+P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDryRpwRB2EPPBYhYxZ4IG5mbeOfn9OBmM1dvRJqf2HpAiEA+RxUF1P0XuEpTrJOgtHxVy7aaiL2qBtiRGZecwgarpY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.232_1608156771373_0.18799619590873395"},"_hasShrinkwrap":false},"1.1.0-rc.233":{"name":"@leanup/cli","version":"1.1.0-rc.233","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.233","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-L5a91CxqMuguuCQqlSIkxiQ35pZe0/onQuhoqD3omgdZuVqoWTm0QtY9epCnQfd+XH7oI2PdSk9GiZGEMJ2VGg==","shasum":"393b55c12286e9489d922ed4cfdc469e1820b8ab","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.233.tgz","fileCount":60,"unpackedSize":137337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2pPkCRA9TVsSAnZWagAAVvoP/0DY8VvlRMcCrbvaEau3\nHzmNxva40+j5MCz6jBVu6PAvXzs7JBjus4/GdR5MYGPCPq1k+LXLrcJxszLY\ngxJGaMj7IFoylQK3xlfTmQpPie5661k/ygSyb8+81V1+XaXCiEdj+ptslp9X\ny3lknhOElhaOGRkfK2H/lVzhseBkg0kwe78SFZIMi4o5zIgkTm3+MqG8u+8/\nQqYqGZTxKWhPfWeEG66Vm0i9kyrHNVIKWWbpSwVRDsjKydnzi1jQEfvVeRSe\nMyAT7Vx8elKMKDybFPXpijkPNolJPtqmnxgRGihR9AvIcoPIysrwV0eelTyY\nQ87l6ilxHgUpJcIKw8HGhPIbKZhLSwhxfS049pIngQgfzAj6Z0mYoPfnzqNv\nwf+9fx4JGJdDPD1pS4VqZK0I+picbM3iN1kCfQ7yV84gw1AYFcCl6UGD4lTB\nQ61vMeYkSAquzrT3686hHRkjYTtikdMFCu2msHo2Pxkgcf89CzyBY2qCU31v\n1ZYcdn1a3RcwpH/JDPfZJOILJ5UWmSC0pnpnKc+3ofdLrhIxrHWKY18jF4vt\nJwa+4GCGdU/5bKO6EviRO5igpGnLiEgl6BAiTV8C2hi0tkTUiyaUsWXKOn4T\nl3vlwzUCuz84NCaVBPx2B26NtEcFaxvwUFZyVOaqYUdQh6yOReFNhQQRCR1P\nGSqR\r\n=TKEE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4ow6EKj0L4Uah1NrnwqMgDc+D1tHmDfzP6Lb6/uL2dwIhAJzG56VEmClnwlIqwmKX3QcPAaJEangofAp/xaddj8Y9"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.233_1608160227641_0.12073205797779707"},"_hasShrinkwrap":false},"1.1.0-rc.234":{"name":"@leanup/cli","version":"1.1.0-rc.234","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.234","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-CP6dFgESyzhAichEyxyKQlVY3IsIfCPqR3TzmAcOip6u3rNarmmaoigKoRkjgIhCsuGS0Zy9eWbHLKSMb3FKnw==","shasum":"f3a49080cd8aa42971979e1ff2fb7b3a9c041024","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.234.tgz","fileCount":61,"unpackedSize":137447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2qA6CRA9TVsSAnZWagAAzKEQAJRbR0Suy3FEE2GFZTiL\nXwlHLbOBL1mNnhfJhWaevmBPrY9KV7zPoEGAUIDcmFJRbdGRYY4Q0yi7v1wR\nLlTE/xSOLW7GlX1BVkve/L07JFuKygI2ksv/ijVVOsXbEx0beUZH8JGi27WT\nTNFL3g1zB+D9uriqcDv8qvJ/+dZHQEoGL//Y2Flc1RU2pnq6iw9mtMcTbM98\nVQPC939DMEuggs/JFFabzcVGTulsyLYmIyhlLJtlQ43EfaVj/zKARkceTLOJ\nr/ld7Jqz/mjWvaGUCYUlfQassd1G6+kaNagxUieOF3ncHuXBJT+o/2KuhBGL\nFZj/8RNqWtfFxnBhmGlaHKyq73muf3jYxKhheNXpAJWfPRh9+5olVYPVRlqz\np1K4zAaFrAxPwf9chTdXwAUh0H81LnHmufWyqCs8JPwDbX3D3hAY5QG435iS\ndEF3iAmMEuZC1Lq1V9zSNi4XV1kM8uDgq4em5IRLPpz74wiJDf11GzPfN6Wz\ndt4y7H9bJlGBPkW5gv14UBaw/lRIdogSLR3G+h73F/BDnVq/7hgltLjikzjZ\nLjHczRrP2R1vu00rGLUvE7dYLkWwsx+geiC2FVSlmrjoPujOFpxyvbZrooRV\nbTW08OM5hSBNM+HP/mkcK7zf34R0D/4rTBalZdeDnzF+k++xP2AcAYr6EtJb\nF7zp\r\n=zUpS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6kM9auvjl0RZYKPjTxqNBuXqOeHfJIpNYTfPUNhCdhgIhAN36MG5+ROtRO+op1DFjJ0NwHNHkDFbhwWC7B9r660wD"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.234_1608163386140_0.021160352793997417"},"_hasShrinkwrap":false},"1.1.0-rc.235":{"name":"@leanup/cli","version":"1.1.0-rc.235","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.235","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Xnm1n1GWIqTdX59LMsAi/35vn1t/87H8ANdCEFYd4PpFOzobwOIFdTJnjWRFD1mqNVHN6iskRE4WWjpz4q5nZg==","shasum":"5156c8b399c689cacb1810d538c52fa48c6d59fa","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.235.tgz","fileCount":61,"unpackedSize":137425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2qLNCRA9TVsSAnZWagAAX18P+waxevF9XVM8bWVODbEN\nJX23K8Np/cR1ngamGHHF0SvqCxoTGiolgX1oW+8Hq1h/XH17Cry9gMnor8V8\nMaW5aKOMrWUWyaGq7EOuoulTcL3mMOcNjQ+S4KxzfWNpQ3nOw9Vp2euNKHi1\nau187BK6QTg6wl84Mj9K13EVOS5lBNt73kk8N2D2qKQ4NKbNxCCirYrXFmBo\n6u/XZk8b8mXqCS/SvnJHr1GEgqjYacvnRHcSssWiTxsSzskQpgSUqskcZqyv\nEWRb8/vVWeTN4ePqMiva1PGO+t/DncXPFtTwWsg7dFTjMJ6GNep+qA2h9saW\nm2Z406ZSu5TuLkdYFbSNzVlYwSDKH+dwcpkdxnMRBaoCIMontWYMOMAGOBSz\nL63e+C/0W/T9QpJTrq3Drr4BlABocysn85QTqGHm9lHxR/kawoNl1yZhkjdk\nICCG7WQuFynnzL6O8d02cm+Sg9YOuc6JT9DE6X1+reF9g/KH8nCJAj6Zj6Uu\nuJlnpuPM50tbVm5vnTFdkoKKoIINkkrQI67YDX8xMqi5fmZvZyWVlIGx67Kc\nK91nWARFSFleQcGbcVCxD9mHlQUbfExt/007OA5quRDevLSEKN2yMofSHd3h\nJMXNGOJxz3F6o2lre1nxE954Hq+0xfMUxyhJOMTAV4MjxcGbBYbRe+3NKOLu\npd6v\r\n=kchc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLGLw1WVPrBfHVB4MfZwiBiPIT+7A3QqNGpW94HpBgiQIgDXZYkI1IsvE114HueIHzt4Oe5055NC1QMArUE++FZtQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.235_1608164044626_0.18403458788796967"},"_hasShrinkwrap":false},"1.1.0-rc.236":{"name":"@leanup/cli","version":"1.1.0-rc.236","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"^4.1.0","commander":"^6.2.1","deepmerge":"^4.2.2","prettier":"^2.2.1"},"devDependencies":{"@types/node":"^14.14.14","@types/prettier":"^2.1.5","tsc":"^1.20150623.0","typescript":"^4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n![GitHub CI](https://github.com/leanupjs/leanup/workflows/GitHub%20CI%20-%20Publish%20to%20NPM/badge.svg)\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.236","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hf7yd/VUz867kqoeh7L2CcCTB94r5q6mkowYbJzgCgBM9KbRFqUEeHkmmtwDa036FD6zfMXx25/iXjplny83vA==","shasum":"78753b2eb732756c6d1e8f0eced6c11a2797af79","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.236.tgz","fileCount":61,"unpackedSize":137432,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2qgVCRA9TVsSAnZWagAAnqgP/jjGr4AZYhSp93MSV7ZC\nduXt8eO8r6T264y13bGxhX2dJNHTZ2eQqBBsxb2/QbEBBiuZFAF97m0c89Vu\nUaWb0lAR0PcdrjrCnwDhaxnIKcv6kTGINbA7ivo7il7FPYWLUmHV8wU48Muw\nJlvRiy4pdkO5LUATU3XRkiCD3KjDZgv4O+kR507658O1bW3AHu71+pjMGoZ9\nxR29m0BlkWnADO3QQ/RPuvxQSc+bZ50Sr12RqAo/11hggdzjWSAe594ZVI2o\nihC9oANMPgvlnTYg6z3CZvF+75GTgjmPYI60OImfdhhM2z79RUFW1E1LNSU5\n7jE3WGRtJA5Vqag90weY+HSfmFXJwripcQma0L4s4G4NMjQhQYbXCEuzkyA5\n6VIRYWq/uxBITCuEhUX6jxA4zcra+y2BKiz9waq5bekpijAkjV5O/J2U78Pg\nl6FKp3ZSLboF8ZOL6mNcJnRfLOl41/ELErb0hb6ElWFUjyMthGAVK97DdNXG\ns/TY1nT46pt5VVA3YOUNU9AT/CZNDt3gzZxbzHPufD3/F9wLe5dlAP7qESTv\n3i3mBgT9x66AJ3c+q5hpUg6pGIhefeSt0vbFLCZ+ww16k/cAd8jIiNruvO47\nN5BkOiC2Dn13wNb4Rvzn7G79NMuvqeW2CsAgAVHOHenS86PieJNciqIIpCbG\nHWBr\r\n=7qMl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2g4bOssekBBPJryOa704B71CGQ7aIc9I5IyyJ5lSwMgIhAJG9AnG0nc6ENkk5HnG7C9N1i1PPTJA8Kf/u7i40E/9D"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.236_1608165396738_0.7850365714593581"},"_hasShrinkwrap":false},"1.1.0-rc.237":{"name":"@leanup/cli","version":"1.1.0-rc.237","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.14","@types/prettier":"2.1.5","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.237","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3pl+ni6xCFoIHdxNZ+uH94oGemhWZNF5m21OPu3TcT7gC8SDIez15Fgsy93/OT4DZ2d4AS3llAkb8lGQH9K92A==","shasum":"0b1d892cfb1c245df0a47fffdbcde4bef7924d10","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.237.tgz","fileCount":61,"unpackedSize":137310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3DBACRA9TVsSAnZWagAANL4P/jGUfci86sbwBX7GVgoM\nxq77zjHgEN9fVFaTy3it+xEUzX+1mjVYbyYIPzg1y9sFZxNzvyzFK35LE24N\nv2mNLuV2aSDoJs7KyUIvyGyJTL9FQWoLyTFbyZ9yCovOpurzjSXacS4j35vq\nBUGbD2q5on4DR681SPZW9jUlfP1xCJm8GVobJdmv5Z40b5ptACellxdIAco0\nqggGBRg7XZhxbdRWwW6XwY+LWWIjysg3/RwYPb6smaMnbt333YZYKjuP7chD\n96ljxVQNKvtbi16Jkvs/eZod/G/biXwD1lSE0awoiFk6528lCgsnOhVym9dr\nt++VyVtjdFGd3kyaoPCR8DmQLAXfb9At7czwOAwvt3hiG+jcCRc/jmAvNQsO\nEHTwTHfr5MdZ397TSoAEL7z7cMizt8ePIjpvHkyRzZ+wmoh1olBF/EKf6bRR\n4G3esCD4DUmaQRxi+ElBpvXolS5WM7pUgg5DD/Ig4myrDXD0qrJ749Sq6ZgZ\n+e1bwukNu0ge1yyYuWy6SklGZdWEObLYm+1c/z/CDnFJcV/oxF0y3s1KjBJv\nraDqUgohdlekGpWD6Dc29w5rxVDnWAQSLri/SA16uX7BaMfMB0AmsHrbsqNz\nBNNt7NcvxCSArui1WYB3ETKXvACyXGsx26fYN0pNjPtEyr29NtTcOqDoFaC5\nmAcr\r\n=YwtJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeTfsh5Q68fODpusO2gt+YOOuZAzeMaikcap1w8ygCBAIhANCFrJ0h1k9eef82P8Oxh5X881wcKs2Gi5hwtIW+o4q1"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.237_1608265791683_0.5649490019955572"},"_hasShrinkwrap":false},"1.0.64":{"name":"@leanup/cli","version":"1.0.64","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.63","@leanup/cli-core-format":"^1.0.63","@leanup/cli-core-lint":"^1.0.63","@leanup/cli-core-test":"^1.0.63","autoprefixer":"9.8.5","babel-loader":"8.2.1","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","postcss-loader":"3.0.0","sass":"1.29.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.64","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-UX2NhPLuyPMk3bSWrQLyKMqOYXxFgXZVXzAz/yI8bx9sL76/7Lq0IQbbZWHlixMchzF/OdHtT4yfsnFT3iqGGQ==","shasum":"9b2e2e0899bdb7752db43a991d53435778fef531","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.64.tgz","fileCount":60,"unpackedSize":390661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3Du9CRA9TVsSAnZWagAASkwQAKMFwrTgvUl1bndfO4/y\nRgE2IqVzRQUgSyccoGAS6KMaNjjDtFr2V0kyLq7TIo+hb9Lp0C/FDYqlPN1I\noOQkeAWfd4lrVN4kSDDnA5iHg+AodKFSvzIlXA7rKJgDByc+/9LXCb2GyRPp\ntwUctS04rVQK8PPJcXmu/YGsomw4yXGUDD3Ey27Io1yZW2k/VrufAsyTtZfB\nJxX3ebg4y3Dr9jr8zvroY7thTxsgKW51vJAWfNJSZ7aPklWDRxsxlk3AjBPJ\nxmgtOJMumaYW5C+mhlXRqpo6sTWnmBlGilmHC1x5Eh80iP15z2+RtCclftFs\nGj2mj3KRup4QZayNaV8AVb0f8sw/rmaDu+7aSoAJhkAEFYV26J73iZ8ROjVs\nmv12vBxkXrkQbXZj9RWrsQk7HtBdA7UVPLp1ciskO1rTYkHiF25F9uxQgjdc\nIY+Q8I4L7btdJ3LclwoWuQfX9Ft2DRYCTxJQBxilrW+9FyoQ3dcoy3m9fDft\nN0o7o2l01gCJt1qLbwsdpYsiuS5D4WK7Vk2UwhfilQatxO9IPg+t6qnxifTB\noaMyE0z2FJq28UHtIkd49w465wydT/rCLLpw5tJ2own/tP6nxWeNqf2nM26h\nKYZ6xIhQT4u5g5gODK8vUUSAxts06FrLZblUYu5ZXpfW0+tOBGPt8lWq8/I1\nzIOQ\r\n=b8RV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAkj8EFDzimGWEf336AF8vh2LZkdYt4RpkNg/KQYjBhJAiEAsr/L0kUtdX4a74E0bZ+ZUMNTFu4+3qh2vuASjQ8eqYI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.64_1608268733149_0.25336896369631523"},"_hasShrinkwrap":false},"1.1.0-rc.238":{"name":"@leanup/cli","version":"1.1.0-rc.238","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.14","@types/prettier":"2.1.5","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.1/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.1?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.238","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uJxtBNnLZ3VV+q2c69HYBrDnorm8wZyMkhmF+VIdbC+xBGngqT81f6RRz2WprJ2TMqoHrzlRzf4NTTd3qU4r5A==","shasum":"3064d35036d82a48d96789a87ce57610143c0365","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.238.tgz","fileCount":61,"unpackedSize":137310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3EQrCRA9TVsSAnZWagAA9I0P/3SHS2zcU0ncM/vY9u1/\nC01VyJXNfYMkka7J8jN9cUWdM7m8A3aOkATky2yOsiDzFK8SsCnUZ+f9Ul6Y\nsn3Ei5YzSDpKOjamUU8ZZX8nb0sT0JzeAKY9c8tN67UsNVRVeoufVh9D71ko\nbfdn+QHmQ4ROUduBp5qmU3sh7dZ6/m0E9SAJ7d11lOkQKOCP4w+gZL27y9HK\ncISweNrVzftrrlfNNjnWI64RBd78LGQCpj6jurV2UUQO7WEl1YOvVbg8ew13\nXg+Pwl+TvEH3gr2tz3nvnt87+ItoqkXr8Tt2/zFJpFuetP1+7Y0+/dmc/kcu\nG5x/3Y/UIIGEcKs1QNCG8h+oLOX3xL6we+W+yt9d0ku2cgwSZa4slJEoUj4S\nwXT8eqPE/9Y799mdAB9uJo/xvw13Riu1t4Rl1Yx7Go0goLB6cR0Iqj2KRZgu\nkOZJ02/pN82eG9VuPsAllp2KTWo0FTxqEvVVI86BCYkylEMCu+RlbrJHElNi\nCPwyJoRR4AdrFZRLIVID+IxoVviF6EtGsCSMGggs8Sw0UPCEBZgPPUVHSkZS\nghHXkOAXhm47fQFEc6ic6n3/iZSkt6cZycGZVlR5V+Jzf+32fZKduIvItxf1\nZDUr2E2sbRcTU6OGyD5RiSnzJCVx/nyuk1wCT1MHWYaTlnjGsdSKnp5a7xop\nrZxH\r\n=OTKg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzA2cKXsSnVXSvi/USBip8OHmAoXEAswWzBxtm/Sa0aAIgJNZyltM8ntZfnvXaZeZHcpovELtxNVpdke0AZp0OT88="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.238_1608270890889_0.2926983854337806"},"_hasShrinkwrap":false},"1.0.65":{"name":"@leanup/cli","version":"1.0.65","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.63","@leanup/cli-core-format":"^1.0.63","@leanup/cli-core-lint":"^1.0.63","@leanup/cli-core-test":"^1.0.63","autoprefixer":"9.8.6","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","postcss-loader":"3.0.0","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.65","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IwDxPpicV9udVu2D9ars7QV488ei8VXDi7l4rWiMlLsMDhdXk8DgcMO4MBTVLIri8NR6q/SynRDQaCupsOpj2Q==","shasum":"e44b4a9dd0935212c122adc81bdfa393472a2069","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.65.tgz","fileCount":60,"unpackedSize":390661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3MYICRA9TVsSAnZWagAA+hIP/iPttq0HseY4JJC4sj6J\n0+LkAmZCCb+EGI1FfMLPHIxfXFKxQlUtRxl+Qv9cR53L1L7COtH+lmqXWpHA\nWXND92JM1zJ22rk3p0uzA1TW9CIkoQxB541FQZFeFHsN+oDpoReINk3BLstR\ne869AaIKnCoJLQS0slY6lnZO0L33WsM7EPZHM4/6GPW6ZF/Fvkfr8qj3NCrO\nOh5E5xGjE2efDhglInJvKdmhWFZ2rdia/c0RJWGiokwiBfM1Xd206H7IIhpW\nN4W8C0yLEBPF39t4zJvK1Ufmumi7dTLlGnlNllK4XLtuymGTZHK8ZCjHiuVj\nlcqp5cNhHHFEVA/MgjNMUhgX+BLuoi3KOFpVttjHzvWiFGuSoC879KwQWt3f\nkQI6/s7yNj5or8mt106tAErI941QE8Y7bSUNyzMkPBguHpn1QsDM+Mxy/tdk\nRSsHhKlo3rDpoFpTiCcE4T3eNpuViTIeqnO9MLaKjkXCdl56+Mabh/wFk+jJ\n+D/du5pytzRkdSXrCRBu3azpL5h4TeIgsPLdytFfOHD8G/r8MmiQxdT7JjbD\nYZq/7edTpmnh8fZ6Bdl5UmPtL1RlypYLEJ2YqnORiCYtRbcWPoTYhKGiGpJB\n+b2dbilAlg6cYwC1TDuXtG5ZO9tCIL5ZPUBvTX5MuYLSUznNusV2ZObpSeVa\nLPEM\r\n=261E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqqJKJUbgBN8ATIJBAHO7EMmXgV//F9VfRNezJbZNOmQIgJ1X2XlKnIajc/oSHaJI//gWwlxHR/B90/iM/Jg1NIvk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.65_1608304135371_0.2477134432139121"},"_hasShrinkwrap":false},"1.0.67":{"name":"@leanup/cli","version":"1.0.67","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.63","@leanup/cli-core-format":"^1.0.63","@leanup/cli-core-lint":"^1.0.63","@leanup/cli-core-test":"^1.0.63","autoprefixer":"9.8.6","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","postcss":"8.1.8","postcss-loader":"3.0.0","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.67","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QotLBPeAjnYfMWTobhWVM1+bdCiCPu3W+Y4UoqhO/mqulLCNCr0cCX+fuPD5u67g0nMBX/o5Fm1KjkOVkH5KDA==","shasum":"394e70bec094a330cbeb5f2f303d8203e8bff7d2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.67.tgz","fileCount":61,"unpackedSize":391063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3gIWCRA9TVsSAnZWagAASuQP+wXtM9OlYRwBwTD21FZ5\nPL+v4IrZP03fthGxI87D6or4KkX/sUV5DU7S+RHfaruqAMN3Ex2r7D2IGAV5\nfmSuAU8BbbgrK9TaRQJvWvVWyH5mynf43YBTdL8D7OIrFXILvF9/wMcbbqlO\nsqVZ7yhx+9PuVjF9Qa0+KwIPR7G8utHPtY7qrTYcShkrVae9qXZnUUapYhMe\n+ssQ/BLgfR0+lxuzfykjM4DPKe5/kjoIIIzhDkEoy9DOV70Zhs55zT+8edfS\nYjBENal6eDfRRk/z8q9rltCxvK7swwCFpe0Z8pWUnz3+4TAhZr+BnZr4G/zm\nv518EnydKfwFMAIYqqfJcxNm/XwyjteCfYAMbE07GFRyPz/wOcjWfxpl4lsy\neeQvk9DoSPtivJtYr9JpBZX0mgs5i4K8nEZmxqwGecA6xyC4ec1T7GDeG+dp\n7LIAx8rztq5DgwbzIeewX+t7UhTGGXWXB+/9SY4lmSzKXWvlkKPlCn4EgBHs\nfpCFG7JXpuc+Vg3dK/BvpzFj6OqG6rhGBXZ0LjEAf/tDkhzjurl3XUpCOn8S\n2CqqPTKDEjNr/SiBmcuQ4gxqqgH32J0u6bMHRRb4UwkFgtUMaPmLcJ7xB+sW\nGdVHWH2FPm01sMERtp1h13cuhIw7PVYYnSleoYHD5C5gdauKIdoWQ26Xq4Y1\nqnE1\r\n=u4Ek\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6YQ4m3lq+mawSGpcHcptt+ijEGu3ti4ACNlNc7N3i7gIgFEqjysSlUbBib49/eEZdtC/0GwwkK9OPEy6pHAxIyYY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.67_1608385045386_0.1602545886826574"},"_hasShrinkwrap":false},"1.0.68":{"name":"@leanup/cli","version":"1.0.68","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.63","@leanup/cli-core-format":"^1.0.63","@leanup/cli-core-lint":"^1.0.63","@leanup/cli-core-test":"^1.0.63","autoprefixer":"9.8.6","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","postcss":"8.1.8","postcss-loader":"3.0.0","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://david-dm.org/leanupjs/leanup/release%2F1.0/status.svg?path=packages/cli/core\n[dependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core\n[devdependencies]: https://img.shields.io/david/dev/leanupjs/leanup?path=packages/cli/core\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=dev\n[peerdependencies]: https://img.shields.io/david/peer/leanupjs/leanup?path=packages/cli/core\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=peer\n[optionaldependencies]: https://img.shields.io/david/optional/leanupjs/leanup?path=packages/cli/core\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup/release%2F1.0?path=packages/cli/core&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.68","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YwAW2jgar2y0Xe2+jW41lMd8qmdzHd6ICWsh8+EceUM9z03LoH9Puwg4LXN1nPFgQKcWxecxr85P+I1rgprZKw==","shasum":"af3a005a4b1beca32fbb7e8a372bf5399cd0daba","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.68.tgz","fileCount":63,"unpackedSize":401014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3r+sCRA9TVsSAnZWagAARYAP/2U/ywf1ZdRlk5yhHMkl\nwsJghW3aUtz/WggrV9rMlmeld5Sidv3hDCAy8gfJa7K1qCzmfjEbWmKS2aAe\n8TuUbgKzD749LodcFkvSCCXoDF9SDDbkuE7Z7gXiBq6b7B0f4LeXsR32pjYv\nNTjauFiLL107E0pr7kcYfDlZLEI0Nk+/WjgNdhP4n36Sr+JiuugwZhPL0TOs\ntAd+1N+VwtPF9ayzQPq5MXTI+YwNGKJHpKHF1WFazNjrNw4MLrCYpyObdXQd\nrXujwNBO31UXrNqUQI8//bT7zqj+aDAm38Yg4KP7DKAI+SZDi9XK+cBaSTMd\nTSIncDQ4kWIwu28i2O6yStpkIM38uz2K2UlvLs+0rkMu7ZYyjb7kS6BkODk5\neaxwdAsIHYGpf/xXDx7fsFIxhmZJEIQNcZXlyMLjLO3dCVEheYc06HKRPO0T\nnn/qFcWTipaQdCgiYYHMZZMn4FcGURIfy/RBWL3+Uncg4qS6epOoQuSaOEo0\nXvEsS2RROWk83IlWT5mFBTaROdhdy6jt3edsAFOA8jLQMUP0JtT+oBzuUTsV\nTC9HA2EF0+Y0UPjctGbk+4achR4S2aHloacJNk0Uoai8YcJ4WLqw2YlNZb0B\nEiiOhNhWrwFHXVQiKFOfBfQM11D/WtHY5dRscAZISuWxVZ9JiBOpDggbaT2O\nmELU\r\n=8ofq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFL6RvZBCQdVtPxr3T9ZtEbyYsuoL0ukbyBpPDIG4kl5AiApTaLWFuNFDHbzCTsT4LZel62YISYVMJFLEWp8WtnAiw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.68_1608433579479_0.28326512388646474"},"_hasShrinkwrap":false},"1.0.69":{"name":"@leanup/cli","version":"1.0.69","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.69","@leanup/cli-core-format":"^1.0.69","@leanup/cli-core-lint":"^1.0.69","@leanup/cli-core-test":"^1.0.69","autoprefixer":"9.8.6","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","postcss":"8.1.8","postcss-loader":"3.0.0","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.69","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-XCGJkEMsthwYbecFwO43QyV8ma3Fhw2CXzjbyn8T/b6A0kDivB55pjz+WCTx12g/GfbGzjVwotdgkePAUoIpdQ==","shasum":"ba62748861989169df1725f8709395b6160c3603","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.69.tgz","fileCount":57,"unpackedSize":139223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3s7PCRA9TVsSAnZWagAAUtUP/AzBuTzuZsGWQ1LNnOV5\nQ2WOvXfkIZESxFgr/f5vulBCz8n7XTgcLTehpS8UAtp7aNoMZFqYt3fE9qGF\nsxhTyAwTTpdi2FG3yOjr0Z3SRNKjNDNsEdH98LV65KXgMeqXhIsI7FEcftcA\nnDtN4cq+B8ptDjyTzAmamg2nvBoR6HueowsTgtcxAaMR1jADRhOGUwrD7LXp\nxKoId1tUnnMCSR8YPy+NqSyJydS3OM7EDVK+g86CoNXiRrqAUIeUwWPPFHO7\nY2gpIeHKuci8+hgUGIg0RTQbfxdVDm1W7oFMaZxKmu9+VADSYFL2shMuMjEQ\n+VEE3Eqx05bx6DTELKrWj9QAM91M+e6+tqECWFQxbmO++dnqbt26nGe/Fa+R\nlrltSCdCFVoXtHXD5kswd2My/zNJnQ+op7lUR14ibtnK21U/2RPF1YfvUfzm\n1+7tF7RG2ut5FBRNofOWSp+tZsAFgcWpS5nKCB9N4XrC91IE4Dh8S1LfOihw\n1qE7IgTox7C5NHSRg+YHT7EqoKBO0eMsyZODGmG0dohJ8u6C6uSxARcskIaC\nfIcPTwWjhporLjmnBq8jsLs1ZBd8r+fqxMAUELxS0iu+vWvBOjW9FxHfaSo5\nMQjE+HKxE5xEIGLs886o9BYTM/HWuBo50ViUbh1qEW5AJgl04VEoa7AUtCI4\nX658\r\n=7hU5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA3eSOvVTAisJKw+0AJveF50QISwFELS6m95vs8s+7i9AiBZNeJ55yyorUVD9Ggntoqmvir9u5rpSD40Y5rJGvFyRA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.69_1608437454844_0.7754064700469208"},"_hasShrinkwrap":false},"1.1.0-rc.239":{"name":"@leanup/cli","version":"1.1.0-rc.239","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.14","@types/prettier":"2.1.5","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.239","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-V6TlaoSeXGCNryx4cflss/ImV2vhq5Rvkd10P5CcLYNC+uUkS0V8KfD0VPHmL8CeUhihkMC0a6QLn8bCrG76Ig==","shasum":"ca2dff187e9998921ea4bd6c36606308f92831bb","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.239.tgz","fileCount":61,"unpackedSize":137307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3s8cCRA9TVsSAnZWagAAFiEP/jiYIvi+IhAE/PHsfD6U\ndyyaHg8+rt+SnBTUik9RbLwBXStHEgsK5sEFOUUG0+f+WFCxpUB6GFneYNco\nLlxbxysvMDd51lP1jk5CmhM3t/Agvf2pul20KZeQ3rnVW3Va6IpDC8YCAorQ\noqRyCxwAwniqJIfGMK+7astKKAks5Uull/wROUqjAvF5uvstwhyML4QUu1jv\nEh8FlpiZXytwaUW1XgOJWhNS8EZTUOwjuqC3mvNEiNuXshIS2OlmU3/wSF1y\n2M/e78W3AFYGDSy6YLw7VdoofbMnLEm8JhXY1POt7gFg71G8QKP9hV9I4dQo\n48yAn4neaDDfljsQgysUvFitj+GnjgLyLDXOudgCe9BeHLj95h0NPKCI30HH\nGNLyZ2c/jkEn6n8wrh+cVMD9IvXWR+dhm+2lFC17gScrjgcTxVJXOR3TO35S\nedJzzd+9PguyPUP5NnuVaxk1R0DCZOq/hGarkh+zmj2g/7deNE2cKwBBOY5V\nnjlMzPWOjKFydqm3vi4Cl+iMvZOkGY8l2AxaFI3SyGypWA0pwkBMhZnbt02X\nheycpIyy+o1Nqenm+3ue9a45Lm1q7mAy+BfWVQ9ECyfxCVGeLYE6gLTnpkQ4\nAwk+adcD/xtMIm8u2SVW+DlYywRnM+OeIEQ0/CDF+ptwkvHuGaCsmqPrUfxD\n/8le\r\n=+94w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCG/rhUhizeyuBCjgUQbdlbMQuf0e3HmY+TCFobcZqW1wIhAKK+FqExToGXWROxXEqdmY8Dbg+4LGVC2gRHnZqP7PVl"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.239_1608437532226_0.22302824971420754"},"_hasShrinkwrap":false},"1.0.70":{"name":"@leanup/cli","version":"1.0.70","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.69","@leanup/cli-core-format":"^1.0.69","@leanup/cli-core-lint":"^1.0.69","@leanup/cli-core-test":"^1.0.69","autoprefixer":"9.8.6","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","postcss":"8.2.1","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.70","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OJb3iTFY+fPYy4xC0U6C8gGXu/tgeoCp1fpPXj55xV7FVmHXQfAHf3Znqdl2RhROyZtOlkqFwi9zk1UMCDbkzw==","shasum":"0cf2a9dcb0e97bbcf80afa69c4bcd8f861203bec","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.70.tgz","fileCount":57,"unpackedSize":142714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3t4kCRA9TVsSAnZWagAABgoP/1twtmhXmS+mVDrx8+zc\nE13AEZmtQ/9hvvqqx3zdKA9UZLR788fo6MmupvLGbA3Zbfro/r8Q1L+HY6h/\n+q3kkc+1Gy4MAcpypKhGbFClhyjAxCeW468ZoGnR9UhtO9xV1HLtGBzHreor\nW8NcHSZmDA9SKjMkatdDte9VYh0oyXjh1iNX34jZVZafGzewS4fasxBPMUge\nt3EKfQieE5KmZySAbVlaK40E3n3a/KPw77aEiq5B7KDZUPMOoSRR8VGRku4Y\nXsLupnipdIVtpu7Dl1AD4sDbMvU2n3A1wxa2JSJl1Jnl3pRHMEFZf2sV7KRu\niVqmjk02/k7ZlZ7+piC0oZksfLINFOHsYh9ObdTpIS1BcEKy3YrlLPB4Pd/P\nOZjyXnVLln5AhyJadizzXZXXOPvj+eg/iquzM/gGD9vdnfP9loMS5OcC2mlO\ngKRoV1Lpmvyk4PpCjKC7aHuQgmDSC8nWNOjMxMLsiCAzb7ipWFiPhvnWI6Di\nPQr/indavWalOREuZgnbLT1hlVmXA9IMbxP/0iVa46bJXp5oFow2qEAuHNbH\nzDD0dMMt+kgM3/riZRvRfKrKR7bq4AyTtznhPZaP3bM0ROKsds8kKiBOxC5m\n2stGiquIGOxgHh7pF0XSOmFGzeavyKGTZpXzns0fmU9tUysGjpLksju8Sdx9\nIRth\r\n=jYkL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFgGFR0xe5RkzXrjI4sBBQaO5IpZZ3h2vyMr2WA9H3nOAiEAyDA64bVLEielyDEjJSd6zc8jv0IUGXnIOheg/ZPxN3s="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.70_1608441379580_0.7281448089669302"},"_hasShrinkwrap":false},"1.0.71":{"name":"@leanup/cli","version":"1.0.71","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.69","@leanup/cli-core-format":"^1.0.69","@leanup/cli-core-lint":"^1.0.69","@leanup/cli-core-test":"^1.0.69","autoprefixer":"9.8.6","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","mini-css-extract-plugin":"0.11.2","postcss":"8.2.1","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.71","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-J8u1bP46zM/w8bIZEoHC6885jSwkANrNzHJYUEZoM1OC04gR/GtziiEC/Tj4ZzDdutXFC2xcb46JaA5yatoaPQ==","shasum":"bb325981988f8e94f264a4f38084f3dd93b8c073","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.71.tgz","fileCount":57,"unpackedSize":143049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3vypCRA9TVsSAnZWagAA2jIP/3TSmMfci4jT+53l/85U\nO1PBTThMUO3c/CryN6+pnHisVg1m4nhRkdC96yWZHP+oEUty8JmZsh8Mmc9V\nBmeO0KviWdTXlGCW1QNWLKTwzZzF+f08wvB0vzLTiJK8WWX5/Ey2q3HQCy7q\nJnE1ciL3M38IAsYgQLQZjsfdY9XtgfEDv1yJNf4j7sKdjaG6kc0L1SQHJm7L\nwPpj0JoKhXosvshOV1+D27NgvpAKeYI5XbidOIMSvbOfLn7rjBCis1XbwsHf\nkLdF/3FfrDFHltQyRfFqcB7qtSZj6YR0fE06/5UON0x0p7bRJyOr+HzMObD2\n8MbTJ2+R3zfOoQOt337zgpyGhKEtD5nSkJJIjWOg3Xj0nVNAAvRTqjueqSOQ\n1R0A4gZFAY5lR4bkNq9AWMSQXjn10MRZGHdSIrBlR26OmVnGcnR9JuxlH9Mw\nsnpM27BJNIIdWdTRbWTWObY+2pU0ryolGEtXN0P2TjfQOTcWoICuor0GNqlP\nZ6JYGNAwFw+HV3IP/g3UFxqTOdhYfRyeoHTseysbsXk7A1eG4vUB3JKt1fuv\nJFq1ZUrGLwVrP1m7CfWKiC3WAYV4Kk1slyy506uLXRVfjuKV21k8y79aKHUX\nGdZ7bIMjEJWF2FTZF+ssyyI/pl3pOGKStJfOPy4osIIwgaIEkOiuyQEFKKME\n4Fc8\r\n=pPS/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICeAcT1BSd/W1KohkjCD3BJn8ydH4yaCBDvgr9GO288HAiEArhZwJy2S9X1AgikCFGxTTYNAyqhTtu/tgCtdWC/2pxI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.71_1608449192964_0.8784561602678276"},"_hasShrinkwrap":false},"1.0.72":{"name":"@leanup/cli","version":"1.0.72","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.69","@leanup/cli-core-format":"^1.0.69","@leanup/cli-core-lint":"^1.0.69","@leanup/cli-core-test":"^1.0.69","autoprefixer":"9.8.6","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","mini-css-extract-plugin":"0.11.2","postcss":"8.2.1","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.72","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fZiWkEvkZ5hvIeP13z8O+NN3+hWm8HHPLfRFnduj/C7XwzyyASIm2AEqmtetN1tMH4+G6iuUQgW/8jAYXky7iA==","shasum":"e9847a417cd94d0b349436f7d0a433d41f456574","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.72.tgz","fileCount":55,"unpackedSize":142939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf37O6CRA9TVsSAnZWagAAtogP/0IM8IuqHI3uKAqBHWKP\nI9l3q6zC8cxavlt4M/KHb1Q7frnIJhA5zVdMnwIDfVKzk/zCMX5F/uSEPnkr\n3T2cfim9KtdBDBioRSBjVnYT9AImrMdv6CjE0jLUz74rpVgpf1vMF1dFOzzL\nyKY9QLPF+QfkY4nYSxXfn6LUdt0D5GhVuHIjY5Epy8PkAsNrZiLI2bbR2BhS\nh27pQfm6JOAyaCgnqD218D6ngG4vq/2K+IN0oqLDkcclOFAWOtVfmcS4xfN8\nQBufNNof+ckL094jDwcOGQp/Pk+UAIUOSGIBXlxVjwXpZIQS2y/RXGCvNhuW\ncZgoHqYpr677+SsKHGrgpu1LxkikDw3XVpBodBsR4n/5MeUA6AMJiZQ56oA5\neS8rl53wxdroAtRwGUBnd2AWw1PC57UZxFMlD3fSnb0mz6OFfJ/dR4qh2h1t\nLM/U1ilk8u68PBgyQFyU9hQ0hmGHJX2eaw3JUReT/wxOOCh5AOCh3h4U0uPi\nSWu/cbmyH59o3QeHgY87jV9xxHMjLHZDJg8HdQ6md3y+yr3wWK58JHCoaXrn\njaFg3eeHoU07+WWbZ+y32UeDZThu0pVDOanTL/8P5YPsurj8y1T8ogDlgCew\n1zPMXBl4cKZ4j7bRXCw5SpkubO56w2E8VD2Q/crEPK/s4xyidy4UNBTM+Ozu\nNBrf\r\n=RBjE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWPmSZHNhfTiv8ok4/s2iEVv/VJFU8Oe+Uu8qB+Ns69AIhAKeEkpwvHvBpdYVZSeq7dQ8sbzy8dgy2R7YUULS9Z9Bj"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.72_1608496057565_0.679542704336394"},"_hasShrinkwrap":false},"1.0.73":{"name":"@leanup/cli","version":"1.0.73","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.69","@leanup/cli-core-format":"^1.0.69","@leanup/cli-core-lint":"^1.0.69","@leanup/cli-core-test":"^1.0.69","autoprefixer":"9.8.6","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","mini-css-extract-plugin":"0.11.2","postcss":"8.2.1","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.73","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vSdvPQ7G1lXJi4No2JZbbi1mw4utIuvH9O7h6ghGMzSNCE5yv8AaZ8o2EZhbcskyNGHq/BqqYPabQWd98sCFsg==","shasum":"875fa9085dc03dc1d1b02199aa7ad7604c4282a0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.73.tgz","fileCount":55,"unpackedSize":142610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4RkQCRA9TVsSAnZWagAA3E8P/0r2NBJYRGWrLXPQQgHb\nJmVMFB3UuFvNz4Ro6IThOBgsUNEzeD+p0zXo7wwuyD9Jr2zevckQS2/SBhYb\nsS4+Kq8rha9icr8F76m5kizUPIidJXTIGHCp/2RzByQ88Vn1fGzNueF2fJxh\nhDedc/8NsvGhDbUz3JLmh4ELpI7s0Jt3Ysuomjda30aUAe+sBW03ekTHJ4Ej\nysCwf+yqNqTiVje6rGHXoqvHGxyzhFYePe33QhrsLMsjv3v8J1Yr3er81ffW\nXSHnuuFpci1FG1dtxD9SJpFIJ1fleEHTvhPpC63b25lgaUU5K3/c5mVfP8W9\nicV3ipHeV8w6hbmwVDNT2a8X7o+x9x9vK+96rhxUpywNjcjyQGNRGYvmgeor\nIanO/6X0H+MIXrBQMpJediuPsOggOi15e5FDZ72CmQL1+IFSni+PubaNX7ES\nOX2WVTrGMlQe4ho95TGjESLnlC1gZpJxEi6VgkBXpSHvRoTJnEo4kexmBGzj\ng1N1G8aHCBveQoicfwXjgqqgoRTpMBYt3i9aaeOAqqbTNnoIynu/FwmuohKq\nkMwu+L7oZliOukaN5BVKcXptETgzuZw3aZ7LEKbzb5L3aRMG3HVBkuo5/Hdo\nVKZjjs4EqYJYplSTeUl+WMjTL1DckciMbTpYqk6nbopjHfIUyqu21pwyrujJ\ncN1J\r\n=5CEk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDR1OxBTxutKGG2PaWN64OL3Z5HLYHNRfrR1v6Do7RpBwIgcatf1WIKL39RM4Jb4nl8Z1hClqZOonx8/6sjyiBynNs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.73_1608587536124_0.14757259957606195"},"_hasShrinkwrap":false},"1.0.74":{"name":"@leanup/cli","version":"1.0.74","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.1","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.69","@leanup/cli-core-format":"^1.0.69","@leanup/cli-core-lint":"^1.0.69","@leanup/cli-core-test":"^1.0.69","autoprefixer":"9.8.6","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"4.3.0","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"3.13.0","less-loader":"7.1.0","mini-css-extract-plugin":"1.3.3","postcss":"8.2.1","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"2.3.0","style-loader":"1.3.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.14","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.74","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-BJ3ZPJU2OMPegUmEjF02W4YkuS7UeL5Mh4HqWMeWYDOZR3UJj7+5kHudDNrYxwouia0zyJ5lKkfO89gZO60irw==","shasum":"5f0f67c610f1ec087de757ab9455dc09ef2e1bf8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.74.tgz","fileCount":55,"unpackedSize":142651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4SXRCRA9TVsSAnZWagAAvWAP+wXi+mm/1/SwuHn+KvqE\nPKNvBIKc/V1TbXgqYDW3tpd02gcSFnQdmvFyBM8MMjTk/LpDZmnEbqMkh03w\n9fwnbJX6dLLgY3zE3VfR/9V7RIM9OpxOwlefEgLDqyF90hZaC6CT50TzZsmq\nqDHMyv/f1GoCTTyTTllgHOtHMhzazhTl8REJUs/b+gzzGJcVLTrn9OpaXX7I\nCcrTBVDg16VCZmaMXPmKxyaftykrz9hJ4+4JmN8ZAe1n+fTDrGFYqEGRyyyS\n6QqxwKvTbS9B+lPEeK6/DDC822OEGYhI2xIWsnv4M0MSKkZ23cGFXB8gC4ZL\nIl7cMMkwvHvUN4JmIyo1/zpfHG0yVqybhhpt4QuYZL+c5CbMW895r6Mnm9AX\nwgdu257t9IJeuVULMkTpZIHI/QWtgEZJd9ntsbY4gnOb7AjaR98+fU6NhFnI\nV1E9aW+1KO5DRO8zeBrGMdnEtV4QhaFYHSQw8kqZkeubEIZjqAT9Fihl7Cz+\nrMdGUVbJalq5pYVEwMaY48egqAJL+de87PjUeuNTUtW63DElmeT7TNi6EjXk\n4TK9f3r9bN7tMCOjSKtuELpaCap58hL3CxJ6VXqFGUWNwoawlLW6hNbym+xw\nu93kiPFfhv0LB3392aMOL1KTiP78tPPZGMhVpbVb43K7py/1RcO0kq/8p+yX\nQQHs\r\n=h9Zm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBdlznMAhqFlzblDsFnt4QCGURn+2E33FbtXOz0qrfsEAiEA5PNTudH96PazNyLqZhmtosiS3z2amRGv9geeii5zNr8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.74_1608590800437_0.6339216339015545"},"_hasShrinkwrap":false},"1.1.0-rc.240":{"name":"@leanup/cli","version":"1.1.0-rc.240","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.14","@types/prettier":"2.1.5","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.240","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MSmkBrlIyEqaMy+lazCu+aOUqqOdHXor2Prq4VwQiy06n2LPYODywluciepKtml4M5y0BDyJBmfIkpOkpoTlgg==","shasum":"567f9c135004eed76c6188868b969ec20f21c3c7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.240.tgz","fileCount":61,"unpackedSize":136401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4YbtCRA9TVsSAnZWagAALD8P/RNOPGbGElMnA4wCg1Db\nRHtnKbhNkQc8xqjZPwHOhYU4hG21FYSxf5wmyCPkbII1m0p4xjwJTKpCjXpW\nsnDbTqgVOxCD67qwcWOZPNsa1fFZ7jMiZ92UcwQND+ZgdeAlzAiDT4QBzh2r\na+SPmbJ3ecqMtk3zpn1NPN9/zmQLVPyoZ8XyQHEm7RbVIvXCkTZ2GpKhpCWD\nePyTY93qqyxmBEnJUkiEieH36AUGCmR0LlYT5VJZLBLkii3un2QBlLrFvsqK\n1oGQRlq/MJrutM6+LdeOBC6L/WTP+2ou4F71ltPTLgPB+bmkoYF+UQJ4mpjc\n+jJ1ak15kwTMRl4qH6PbgpsHjmyFsNb3TQVpiidPDjJHFWvy2eMXpfGgBMUH\nZosTkbuMnFOrJxCdx9MRSIxzqOwDdQJusI6micbUGZ+WEK34QZiJ4p6X00EN\nZSAaeKBInFUtD51uumZQFMYaXSpwSqzbtSmTFOEhph6f3DJMslSQ6Gu5VYGX\n0rxb3ijQJTjqvwvX7oJZl0vgOvm/3fWLOnAXUNIFNWaJxWnG3n4YgRaVRCCJ\n1aT/RKaTUDKLwY9W67LYqZIIaspwh3W14ww32HEqnmR9maEF1HXCYfolKCjw\ng4D82UWXRhP8To2+X8+KF/Y91RFNvbpWYtFj7XNg6+Z1VxHj5juyKa2HAyGb\nbBp9\r\n=egG/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIESJxdDtiJxUHjI7Kf/nvATZENedy+cxzJcMye0Vw4J6AiA5/KYOqgSxywf7m89kX/KdS56T0h6tQs7RVKyphPuoxA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.240_1608615660870_0.19166156704939952"},"_hasShrinkwrap":false},"1.1.0-rc.241":{"name":"@leanup/cli","version":"1.1.0-rc.241","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.14","@types/prettier":"2.1.5","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":"^3 || ^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.241","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Z9joZG+iV4/4czhzduCl0KfGxx8leRLVUePVOB1lD/8RqjTNwOqnr1BzIIgZp2Wx9Vt5W39ZOh4+7OykeSX2xw==","shasum":"40c104623e707058599014521dde62852c7caaad","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.241.tgz","fileCount":61,"unpackedSize":136346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4ZBQCRA9TVsSAnZWagAA0QkP/2hqnGcU6geHtRoavK/3\ndcFgWXFlVwFE8LtFgV0GgRrnxzGZEFu1kc8ECxbszoGRcAcKZnxHBV40gvKh\nBE6aH02myhGizEqROOEcFIhkzHTrxI2NvpWwMpgn+Xi3ssVf1r8Xb9qI1We6\n9LSiXCNUrMCHd9zhKu7LZ3w+07KTtgRCANWuaYJGrFM6Dhp5n/dMNnpYqq8K\nZwBRkZlmE7JnLYV2PB/H7jMsgPjJ8a3OM2KopxanN/o2MHLRgO2kFgaTcLU7\nshBV4sObP4hGmTy5FX/FMTFFAhORuRPTUy31QwuP4Foeokdc9it6SvpOvot4\nBFrjdI3okR83RmBOJatLHdAzCxJAvU9SkVBNN9RymKplisthSpEP7TmX+S67\nbEn2tK9SMRZcIBewz6oPk8XCO4c5cLoAc5j2UO9sAhATeNoMZyLviTmiKyZd\nL7szF+ONCMlfF6gQmEGmksjWiDpCVBeyI3Ln1hsyF/Y2NIHpRVXnswXWsa0Z\npMtSy6Lv+oAEW9de2P8Uj0qa9TwD+9FFJ7gcFkPLwJnTdRstyk1oQPMn2vXM\nnGhbp2GpawuLS/QW0p6mUVer03uRLi12cR3VT67Xb6ESfYgevRHgjvbxJX3O\nXXmPnxRLwkNB6AGBJzd/C3V7UVxce5y2iZUpn2aLXxjs5fOZpu4XNQJsS/GQ\nuNMG\r\n=IHde\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFd3xTWx/mmCMxUSbKJf0pabSy18gK+oYnqMsNSdk06HAiAgi8k2XKZ5GSdV+mH1XqZDaKjPSQNljxybzu0I53EwAQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.241_1608618063922_0.5366029205115646"},"_hasShrinkwrap":false},"1.1.0-rc.242":{"name":"@leanup/cli","version":"1.1.0-rc.242","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.16","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":"^4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.242","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-gs0cO0fpvqPNHBix3uQT0il3tNcZO4ItGj8sVS2iFBmsY59RFbJZuXrqlMWHktxNDDYyuKLLBHyahw20GpjaGg==","shasum":"cbd259b4c058a380a1a6ca0367ba1bbc86d38b00","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.242.tgz","fileCount":61,"unpackedSize":136340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6I+pCRA9TVsSAnZWagAAOS4P+gKf9brawoecEh59oOOK\n9c9+G/KIwiQNFpkcM46qExJtldGqDGlc/w7PlqgWAPARBKrDPC0cY1gHH18B\n+cXEI62Z/M0cVDHhP8T0i7K7qVE6Rf1oaMUCCdwpnCfmJFlvJcnVb/KQqlAK\n52BP7r2n0mdXRUeKZ37TA6gNgsnnkFG1BNYCFcU3aF+04uWAhls6TeGXqUip\nIqDaLwtOTPSB4IuGRf3QNQs95VXv8cGwp88JEjmo97odOj7NyDpi2qhTeUPX\nxcqO+ccnjCK7aKs04l5t9vb3Oq5TVLcVxQiPJlc5e9sYT4IR+5yqbDhS/kOl\nQnTesYhHMnZRSZQdMluEtcsSHqVWZAo7PnJ/ggzkUeZDdeBLdGtDbp/chZHS\nT5l4SvuJR7faW3P8daEznELZFAvKVzUDd4fIapjn+zdUGROlWolryjIWd2sq\nMcsOqTeqXAWrRHFeLTzTUVj9sxu73V8akhUF9TOll6V0jH3OXNOcRqWEBpwH\nANBhPtzLLyg5pCdvjrnKg1hpEH61TfsH9j/ee9PCq0dPfbls/43UdgOMebWw\nxbxWY1sGbfO+BK+K8iuknbZ+GQrvIwWMzs/Oe0tm86j3wXIG7lYbAYzXl6cp\nZfjA8xd+uhCNLWLtdJFKERtsSBvDkUWh7DLCDwNDy0ofQc9zwKfc5yVCoCOG\nYWlQ\r\n=Cmoa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEYh1O5rvvnjMu6QLAy19pyCmBRs8u/lvS5rgRJiPNkBAiBABXcZYUcQrgyUJ5TFBvfJLcjrhqJnyfHzFAddhyL61Q=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.242_1609076648604_0.9326066507200199"},"_hasShrinkwrap":false},"1.0.75":{"name":"@leanup/cli","version":"1.0.75","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.75","@leanup/cli-core-format":"^1.0.75","@leanup/cli-core-lint":"^1.0.75","@leanup/cli-core-test":"^1.0.75","autoprefixer":"10.1.0","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"7.0.0","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"4.0.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.1","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.0"},"devDependencies":{"@types/node":"14.14.16","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.75","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ybqoVDKGMwhvd8FWtpPyDy8FfzBy509LuxpN/9b/3IPds8jrX6h8PLC2iwrA5PeSqi7Rpp35xVhdFvuRT6cgUw==","shasum":"ca467d91636a3dce1fd3ce6171fcc49fb4c38f17","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.75.tgz","fileCount":55,"unpackedSize":142652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6kxJCRA9TVsSAnZWagAA2v8QAJzzFgfg/f6OPdJf3Fgf\nG6ARNbzW14Xmo7XABPr7iZi9pvHJQNAI3DX2sHrIH+zXf2E2RL0MUldWAbWI\nTHm7E6HxgurUzPuBrXFRGLnwCFbIzyK+Zz8Ynfh/kyzgKeJu3DOFAA2mJJMg\nxLS3ewH3qU070auzR/K5bks9ArEIv4isGXoi29xvt77n7Qs5FDAxpuyd9YCl\nywjMRW6UnIjFvMx65JZ+CbAGeLEa3CWgisCuY7k03VspduKbL9gZLtCJWAkk\neHJQaT5I2ERlwWVm66pUkEA3W1EzBZCDs1TZpzPXqT4NFvzMYGvqrzSyl1W0\np4bBxzl0/KvkKzSZrLP6S0PD+HVJgNAM/3OK6hZvGvsWLl991nxMhABVeMr0\nNq1tB+2Dvv++gr4NztKbtvbIpt/mcVKhEaCLf6E30EAxMGWaPv5vkV1uNNai\nhuUZSZ8kSOUZHxGcNGsXxCfzhN91+anGe3PuwUykuhEoKM2K5PyodUkiV+g1\n0JKMCtHBS8S7xMVAFB8TC8BMJtjoiCSe6eTACpUfficRhT03DecKa4m4Tf03\nyRCimQ2X+U52xGBEUM7aJSERgAjlQ0uWsP8VcQP1FiDHqmVFTMhEIkJgp5Cu\nJ2OeG+qC85QsGYWLJ+W0a/tOIGT+X9pvoLWvspZxmFkORSsILM9TKoSzofQP\nmNZ8\r\n=TzIi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNLtZ1Z+kQ6fObjthGHxIUte3+nXAzk0QgRr0oNSZK0AiEA7/b+x8px2aM1UDBCgnLE+gaOWKdHZHlNOMNVSUvkD9s="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.75_1609190472714_0.7567040820878812"},"_hasShrinkwrap":false},"1.1.0-rc.243":{"name":"@leanup/cli","version":"1.1.0-rc.243","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.16","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.243","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-nGuMY4QrPd6AxhrBBRK1ZG7zCPB8r2VkwsS2CzXSpxKIg6zt8nSNHOLRrSLQCTRLfLaar279f4MaHFi5fE9Yjg==","shasum":"222ee4fb4286c5bc86ffe103039ed61769a395d6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.243.tgz","fileCount":61,"unpackedSize":136288,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6kxxCRA9TVsSAnZWagAAp14P/RD93brzYGb+MLrL4Ff3\nkCEg8Ln8Q5OFL/xBTMgraodOrEvXeeUv5GZ3hmMwvTcjhw/izTxWn2n5xd9z\ngqyA+kh3ivR2Y3Ag9ZI1qYnOub27hhpJ0OzPOM2DtKxjunEFuKW/rEaU6gQD\ng3SnbezA1oV1z8skHiTgm1OtQqCP9mECmuoI4x1GcgaoPGJZU3lz/P8oXAwz\nz2Nt4zVDhOv//1EJ1dYxk2ELO4OrIH9tEQd5UClcQuX977l9nXFa597fU7u/\n9iQq5IVs2Z6s+w2PRlZhwCuTqXCa0ra9X6G9GXYIybfRBtKQ6ylPA455Gs30\nFYGZW7Piryc9WMah/rog249AYfEezbHfrF8OP7MVFq6iqlA6W8lcRGpKhvm6\n4IPrB0bB3013wPBlypF1X/BLJU0MTKOwcCmwJHAz6XVKsfR+LczTJRbWSG4J\nyfrZm/p92D2VqrVup2002o3qZikvQ9kOcl8v/5ZvwHtO65EC9w9nhIJvUmFe\nRlSXEmgSkVvyqSdXEC4efgcoOUTYZ+wT9WguGR0RKdJygzKt1wly13BJ2GPq\nqhApcemQSa5c2EgE+9Nv17h0oSQCbW3vH5vL3GUXRKxjU7p+QjsoXK1JBpSd\nSdo6Df6rnahOMAjT/po010Yss0yllFU8JFFKa4FynjgV6uweb/zuSS0kQV0A\nCv0p\r\n=y5Ho\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHxh2NqtOHg5/WsRw+VGFUPBXAF9XqIghSJ2PtSkmTiGAiEAt75mnRk/lDfVS0UL6InnXGv/IA9ucr0Nk0OJbQ8Mj18="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.243_1609190513123_0.018135608257308533"},"_hasShrinkwrap":false},"1.0.76":{"name":"@leanup/cli","version":"1.0.76","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.75","@leanup/cli-core-format":"^1.0.75","@leanup/cli-core-lint":"^1.0.75","@leanup/cli-core-test":"^1.0.75","autoprefixer":"10.1.0","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"4.0.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.1","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.30.0","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"3.3.12","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.16","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.76","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ccdNTc7bo8RrU/wcjb85ADYUdR6jTtmmOe4VPaoIucVOPnHA2LUgSelu70Xt+qoalEgu+qn+W0fyD87kshZUtA==","shasum":"7f91a512477de4ee5d0ed82493716f3cd4715900","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.76.tgz","fileCount":55,"unpackedSize":142652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf62+3CRA9TVsSAnZWagAAbqYP/2+eQOYNYTPGerzeZQVB\nb2a/tZjLX3uQJWAyG3JGlkgxrdPHnptuSuGthBLgCKroGhQaXhL7wDghSZJ7\nlGZVYn1zi3sgyUB9iOFT2exFWQnw39wRP78Rcsxk01h5htB59rBPYct4zii9\nV+GNRNaUyitHOMVTl0EvjQuzXrqAcz/FSertJYhIv5TECz1ml3V74QkbzyfT\nIrSrvRs6lEgw6Xxsq+qKwSdO5qWPIXGeeDXGJCJv/I90d3XV0F0HGoifBH0+\n0Lc7ORxTcnDBEwdDY0c3mSx4KSC62bHFf+InYKhjgGCWAoSkraD5SxWEYw/J\nDUIBfi9JGLzAgUsA4p0VAiTyu1/DhF9C6z/9U4VOgZODdij++4wD+KbtJjkj\nKKJ7TG7M5EyCToLzWBZeRbVljaHq41GJGIXNEwP7xbdp4ZRH0XQRcquaEIz9\n3Z3dB0CWVR9FWMdzHSM3e1IWFzLmnMb696udk+6BHup5uN1xGRw3HKL4bi7q\nF4b8yEnmRTaPdpYINF+tMTug44XOAHw0FjL/IEvqhzU0K2c3Dvs1ge1LurUv\nVEqQv/tVXaVoipRKaAjSVh+ynF1KPiTV+gJu52/MmdGT93P4neT2IeYEfw8i\nKWPIVBFRVvsPLl9XoRnWnf3qbkxTGuVYw+ygFDoTTWNGkw6mo1M0gY0CFuep\nivO+\r\n=utIP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMjz0tVB33s1ImKO5X6Yfvf/7SzjkzPJZbxIk4Z2kMNwIhALAAjqTQ+5TU4bb/WicSfv6tspErJpkV9Cg1PxRUMGkk"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.76_1609265079009_0.3438476426487853"},"_hasShrinkwrap":false},"1.1.0-rc.246":{"name":"@leanup/cli","version":"1.1.0-rc.246","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.17","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.246","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-DPInNc4+qKnMZTdaVixHpO4Q1nFfBVn7wpAmuWOktgebTxTrg2FFj+wUgqVdzl9ojFIYzMdI2h6NCCn+q7S/5A==","shasum":"4d4abb7956e60b1259052fd4793952b088e53a1a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.246.tgz","fileCount":61,"unpackedSize":136709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7yg6CRA9TVsSAnZWagAAa5IP/RO7E7UH7UUixaC97MV1\nI4Cg6koBh9mo9wy2TjKX/fx7I4iHUXeKrx+/X6rwJ/Wz+PArDcQpA8fnBRfc\nRL6W/ZY9Ki5NeJMlh2yCUPik9OLtEBQv5DELXo5Wv5fdjudk+veymu6EIIb9\nJq72dtsFLtfXghmj9yScYSNcHyq52mkyjc28f57MPpLuR4JKensF8lCyBIK1\nhOqCihAtPQWd2bGgjh/ZqNP2c7PTEs9bRs8cW8c6CMC6jgV4foaJf2JWsT9o\njBRxiyYBIjon0nU3EEr4s+XLBGJtefvMkAoR/0a3eiQPzBC/bG7Jcy+8wspY\n97RSDItwyPpN0c3PTDgVEoS0IugjseW0QiAil1FkjcYiccr7GPHOTdBDS//d\naIlVt6qcSD7hcJjZJjWPbeN5HEzSPlYMs3Z3lNQGSrAt8O/6nL7yG4jHliVj\ncdk3yPayimmYx5Z8p0VcBxQgTimUoDP2aotcwWX1MNWb/2AwyZlEFUfQWwFk\nAn6HVvs/xkD5hk7rT9pXrq4cGYEVRaTWWds2BdFRh8bMMhjHFdz0ZD+6k1sw\nD3hBcw0Qp6zfrJquNx6NR4fO9F7WZGJiNqYfn0RqwuAZ4sQxUeKov+dTmclz\nYbwz31oz6qXZbfU4d/Ykf/4jQ7s+oYqOVmRggl6kvC7FFEzFwbriVI13NlqX\nMYe5\r\n=r8LP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE5OCTKkAxCbQIySdm8WAmL3z+Io6KEIh7z9bevIQ+MEAiEA3CbRBcBAkYIO0exWApbUiEyB50eS22AAGEm3nHgU5G8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.246_1609508922205_0.22079437717995742"},"_hasShrinkwrap":false},"1.0.78":{"name":"@leanup/cli","version":"1.0.78","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.75","@leanup/cli-core-format":"^1.0.75","@leanup/cli-core-lint":"^1.0.75","@leanup/cli-core-test":"^1.0.75","autoprefixer":"10.1.0","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"4.0.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.2","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.0","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.19","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.78","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hz2KWID5s9brH9iKdaf+ky6RUXd3NQMK8mzjciXYMOR6WA6xRjG579HS9iogqRTqwKy7T761c++gsA1DmQ91cg==","shasum":"35482fc8d5d9c67be8e817de06ca200715eaa2bf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.78.tgz","fileCount":58,"unpackedSize":144138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8RUGCRA9TVsSAnZWagAA0EMP/3ldxVsx7NtxddA7a3wM\nEhksMEa8bJLpvFp7lrD1KSdSAVEuNNsJwK2/sID8/CwgIMmarfWA+9+fK9Px\nz5+PWibO7/NKbS9VTcHXF7XXa4EaeOaUzbwmC1QE32wFWNNvWKELoHtaE840\nhtlFSwMUl0XUUBLfDwN+Kp+VzaKCgUxtzPvnmezdJ4x8upHkFBMf6HstdBDK\nLzGjjBQA2SXzrly6Z9b1/73VqaplBJrI2tGhSw/gI7cPQUSvcPQ7Y0nV5TzN\nO0naapzXbJL09IHxT1KwyDhWeG5iyy8rftzrQhiMDEkOU/HsI4cWvIlgwGqA\nqAN831qMR6tbcubzzlw5+8nD5gGSKxEIETgu04TT9larK/hSJwF9k6LixH2O\n60D7ZanMo2IeljGgqxgs45NnfwuwsdmoZKbnW29r+3lsrresF21+ge9HS7KE\n6HmJ+lkrM4kEPF+uGV6FgR062VPX3FTkusXfKAhvQiT8HWrpTXpsgwNVoH8a\n7fNEEPD9qatdoL9oa58FtEv6RoMusFaF5ta7rQe2jGfHO/qjQ609aUztjGDV\nJPEdOAdzrNCThsfqgYDp9vygxY7SG2XPNv0gKuNbBIbISpvHKtnj6bX+Zltp\n89nTJoGoXcCd9knRZ3jffPalOQ1RiJnEMjPAjdNfHdksd0sG0MDp7/kZ4fbv\nOMt4\r\n=vLmt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOYlSTVuBaRd4YN5QfnW1igXE80gfFCrcJWpNQAqBBdAiBH2VA9+1Hk2ttb+y+VGQN+nu9S79J5ULp3gXdbIXCfKA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.78_1609635078466_0.9733260290291792"},"_hasShrinkwrap":false},"1.0.79":{"name":"@leanup/cli","version":"1.0.79","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.79","@leanup/cli-core-format":"^1.0.79","@leanup/cli-core-lint":"^1.0.79","@leanup/cli-core-test":"^1.0.79","autoprefixer":"10.1.0","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"4.0.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.2","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.0","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.19","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.79","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ypM5hsDBD1pXcIzJCEBLxMXzRMB8ZpQnRFwqVhO3i4Ps0kR1VK+iOu8YiKPvH4v7KGlEwuzot4J7zdTtk0XMTw==","shasum":"dfcd7823dacc097a68b55a17610c6b8016a38fde","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.79.tgz","fileCount":58,"unpackedSize":144138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8R8bCRA9TVsSAnZWagAAOZ4QAIPn0xvzFO+VZKbS4EbG\nabyg36GiOoyX7CFa2PFrYjw5i2CDtE5isApXUCoo6FX1CSN7YzBR4BBQICNU\nCTw0pAsXe49FoJG0iqVOpglH8GuKXYu7hc0hp3eD0oVkZDbF6qls1i48Y8M+\nzkpTJo07EARQTSV86MM8HBfAJloIspxajcYwp5fomMudoB4OMNNk9EiDe9xf\ngey6GQrJmsyhzwFyyrox8fdEvTON75C/LhVTyKmIATicUv9YZMm3ceGlvaiK\no2rAdKSkDhRwqK/Pfh4ezy1g0xbT9cA7kpmVW2c6hWXmx9M+qoEaxevGClCu\ncnqLU/67wSVIJcNyWJl5qlDX0Wy93JU5rdpPe/V7UpuzVtO9h1vStrX/wa8v\nHarJtX0W1qYsZ+roIIoK3k9EHpewx0+JOqR6tQy6drbKQQFYzJMVWdQWDTkv\nE3NIQ0UhS5MHts0CI7Ly0YpOg1UR8dBsPbDli0vRanm058OSmNrGSF2Br8mQ\nrjnqP9xEY4Xq1oy2zVMut8CuxMwOjlsRW0qZBBUqLiX4heJYoA4XNBhNtDhJ\nGfHtYXcjpMu2V8KQc+4iQmAro+A/ZAnJS5UCoqMCSVFXbk2KsWbxD9UNt1fN\nZ7t31COfl8n17MNUI9IDCoLxUjz37KWv648klpJHRsl8nTDj+Mo/nugpAW/E\nzKT2\r\n=war2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA0QYhBoPh0LAikL/fF6eP3+Qon6AzQqaHUFwdo0z2CDAiBcFpGYcn4hydBgrJ6n872ldG1RKDmISlxJKiCfYvfH8A=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.79_1609637659514_0.10679897110639969"},"_hasShrinkwrap":false},"1.1.0-rc.248":{"name":"@leanup/cli","version":"1.1.0-rc.248","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@leanup/stack":"1.1.0-rc.246","@types/node":"14.14.19","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.0-rc.248","_nodeVersion":"14.15.1","_npmVersion":"6.14.9","dist":{"integrity":"sha512-H9f3cXgkfIEp6Mcne2mswawB8yVF57O3c0sexDAOC3WnKncsPzYaguapPBOHpNVbdQ8eBCm0+I3MhYIbZdAeJw==","shasum":"dfae2b0b711a5a12646aacd8c3c6c4fe6865b7b1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.248.tgz","fileCount":64,"unpackedSize":138225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8ST3CRA9TVsSAnZWagAAVdYP/0EZ8n8w/fbyGrAW9d1l\nY+67ZA/knnkeKTU8eQIUqNZyGfHJUXrzGJ+bbkUnanE6rzegWzrB9MjbivUY\nUDRdbnoxRA85ypdXhljvFNIFBLRvu7RatF4hz9zFEYgkilfSrx7RleoKNABz\n3X0Ac+3Idu5F7SABXGTS1NZrUs+4AcHEE4f8AwG26PW4YGz/qoDASKuIPxWq\nGhv/pGtMkDR9pL5frbNBqFNCW3V3gDfPXHXyFWbso6vVeur1RU7HYs0Y8ppL\nd711aaZTbYEFyW5dUwOHwewtxynsRFq0f7g5d60+dflpP0eAlcjSmNp361uy\nIOJCsJQtrtRo1juf3Kcxu1ClYklozv6h0AiTOY9hjbWSHgTVZJFgVM45MoQe\nvKQptdwamiKSqXRcUzd8212s/df33L5pJ1lt47f4oWamXYVb0xL9tQKeKTgn\nGJmJ4gZ1nxuq6wAR6ZdK7j+0Q1jXb6DNKFV8yUJYM4vxcgehUeSh9AkvqYc7\n9eLiappoVB9kOTRQpxPvCrh0MHiNaYTg8TYd4twAu0Ng9/2Ud3Qy+rCDIX/N\nQFKS9pbQnDNEfCc2utLuYLzepGqlKwSHZCKrzU8IFE65jbAjaTJ8bDQn9TSM\nk2qC6aM6fA4JZF+nkUONvex32fkjRpn7LQpZlZ1TOfsT7pzjXuKKrVIzP/Ni\nVoz6\r\n=QHyE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDJaLSDczQhEM9iqVbr+jn/3L1DGvFhvAXBp0UE6ZAQsAiEA+Wl/rvHMB4OgbIHfLHwiygwH+vAaOGWHqHRTHcg1yJo="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.248_1609639158699_0.21743799106987982"},"_hasShrinkwrap":false},"1.0.80":{"name":"@leanup/cli","version":"1.0.80","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.80","@leanup/cli-core-format":"^1.0.80","@leanup/cli-core-lint":"^1.0.80","@leanup/cli-core-test":"^1.0.80","autoprefixer":"10.1.0","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"4.0.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.2","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.0","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.19","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.80","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9QCDLKyvBT9GAcaHHvLk1bW7q+h27UcgCGdn58e/Ro+ebzN3EN8EOEJskNOiWd72Rg2wHiTjDZ9idhSEmOCRPg==","shasum":"5f680ebf280bb6de21045887eb97ba2a806814c8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.80.tgz","fileCount":58,"unpackedSize":144138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8SvYCRA9TVsSAnZWagAA5kAP/3/Ot5WRA89yrLFw6o8k\nM2x4X/wSzMQuHbP4QbSzMVfh8YCIzgnm2AB3cGtt8H0et/PvFg/EkHOnEWba\nQJIjJO4p7GqYgenELSI1JDCMxkJ4Gs3CnKYEELYAf3/MhZTHNESfUF2oHVlJ\nIYf73VNL5e1HL7H6wElflepewmeIOqWIIq2VFe3q+rrvfjVcA0qt0Q+kYDT4\nqDxo7xzvmAo0jM6DLwkewvdm/QKqBhw6gIpAx29o7oyBRrjK/3Nv7VenYkZ1\nin93QsSo+5svpIINLiUAtT8CuLrdsAtIULnyYw76JuNlKjYarvCEendyzGhB\nLLW37iS1aEpPXEZ93lDy+TDskvUJUfTQV+ecDBcbuu8NpCYgE184AvJWhSLZ\nqBarCrWYfC+aUqpRMbufHy/SOBakGJ+9fs0KRQOH5UdlOwXFjD1KEiHh0fCM\nfuTBA9IWYy3iRYNylporIRBVlm/vUEU7UiRrge2pnRdXTPD5d55DXHz070dB\nYC3pyQ7HDgD5cyNF8YUlm2FPJf5Yf/K3wHrVnU6Pz1sm5slrsbMy2nRBxwL0\nbsyXeeuv4P33JebZ1g7LZ24P7YDIArjKJiVvCizpYYJZrxX/jofYVQKxoeg7\nGyFgD8LOdd3drE+E6Fja51ZRVgKVFfmxXN2vR+pBGeVwddyExRGjzNAkyF6o\nsd1B\r\n=fdLa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE1X5wYKnCfqwohiA5QohKQSHZeYyB8JaRmIN5QWyzMvAiEAz4z5UPJronE0s5WwNksYWXHniSJkn43pZUfkk/q+64U="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.80_1609640920155_0.6405162405592464"},"_hasShrinkwrap":false},"1.1.0-rc.251":{"name":"@leanup/cli","version":"1.1.0-rc.251","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.19","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.251","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-y5p6v+pVjOIvsy+BTx23fMNhNLbDTAc+hy5BMG4lwA1uRLsj6PM2Jg6z/BE1nMGj3hmzM0NfPnaCwjs8AsrOmQ==","shasum":"c66ef4525864be8f3bfd1dfe6ad8f13418e7cbee","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.251.tgz","fileCount":64,"unpackedSize":137899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8WdkCRA9TVsSAnZWagAAplUQAKOUg4zj3YPikTfWr7vx\njeKcJAGXs+e9NzETUzLs8bDqA6My4Uubf6n8IW2/EX/LQkTBmMJgwwgeJcP9\n7pg5m8fEUyDsDwG+83ruOAaCo97a5hPC/dr6xHIasKG9ZrCvlGGDc9/pDmA4\nPWWEm5PDlQ6G1Zn6zFGArrvqxQstAyiZM+oFFVcg1CceBJzFGoNH7NONyHxk\nstcFXf7uguDFK/q9PQTLE8XSrJ4BjInogaRPHZBEdymi+c4cne7nlbMg5W7w\nlZpVyKL01kiWLhq4XZ24gLR2EmnAS4k4Sb3mxs3DPfElSc8iM1GSXxtt6vri\nM+Ar6NPHrfAb1vz485obc6y0UuKpVRzvIiGh6vvYN1HbS12Su3L41UB5mg36\nQ22QR5nhzjkZx23gjHg2bz0GYlL+Fu0Y/QvWtYuhGBXS9Wa0EU515/1boMiq\n7LbZqBMOyf3YGL7BcFloyY8h7+6620e7TPF/wderAt/WR9nX5ISJjFpCAtc2\nyFt+2ApYsOBnYDOI7JUOzwsnjZcpdMuQRaaehoKmliUHZzj0DAqJgw53uxSB\n6l3lOzHyZDXmTCQB8Uqm2buLgIQX4U7aSrgF4rTOel5A14UF4GwuTYdaUMvB\nOPBp/FtDL17EfHvlWYUF3WdFZlRX9+zi8h739MGTIXsqZcpnyxSsLU0nW9BK\npuQa\r\n=4PA8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfr/M36cvKFOsWARo378jEzFoKBxbeM0Ky1tHQXwqpjgIhAIEir+r1cpjrEfiawfGlMCM10zlyWqVeUdwO7tuVz6qu"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.251_1609656164104_0.16600542417045938"},"_hasShrinkwrap":false},"1.1.0-rc.252":{"name":"@leanup/cli","version":"1.1.0-rc.252","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.19","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.252","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YX5zNuDKtoyA7jk8DN+iqGuLgQmhHku/nOr5CjHvVdyLsHjVG4GaFOItax3s4943jVkL9+szmjkhf/O5Qzzfww==","shasum":"29d1e4b1ab909abc5ca7579b80cc39313e533818","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.252.tgz","fileCount":64,"unpackedSize":137903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8WsYCRA9TVsSAnZWagAAZuUP/1ZmME3LjyTcN65TYRg3\ntraxPU/sW7AZ0tRefrnBdFfAZGmH60GaPvZ66psIZLmZu0Ts2FzW7ox5463r\nF9sXgDWCYKsxh7ULQUiSfBBayWivcd6qoOO6afNd8YXpjb+ZJx0wK4Phe9Rc\nCmHULVZlB48lgEqDie8qKuYAbsXbESMvBzBr1ql4t0oE2xBH5xFoUFrExmSb\nLpOou2z84nFCZbSoJw+OZsSYkX3bxu36BH3fAUycVvZVEhWloyNkdS89EmL+\nPOi4HcxjjFxrzYneOG6xxalgQJUahGZewJi+KQlLYr5ZpT48/XDd12wne33i\n8bu7qSOwUV+lckboyQoRaz6gmwUUFAo1ITdSzFTVn7l0WqDvJjnfAAdwE1t8\nt9v5forFcMkpvVNyjIwhATW9ulNLm2W0rhDsZC7rvkYRB9fNRY5x93bkEUiW\nFEybQpsKu97mn0jS+oHe3wTxzDRmm4NxhiGmBwuTwmS4CQIJfNpW7PVeXooI\ngprshCs4JfwRjmhozND2+3ZfFv9DV3wKuy1VuHwrd/BXvbH/RdN+UoJ+ntJN\ngkpkjtjFnTyPGAP66DHsiuV0DFPZY2HWfsqKE9jwYmkxnzldWhGcM5Cqafbz\n+Q5P27pcPB9EDy/ufDf+FlQ2kWHv8ETXyiigqA33upDBIGi8WQ4Dhy/q4QeT\nYso0\r\n=z9Lo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHsy05zAXClCWwUcIWI9ziBwGndT+ScF7C3KhstETWfTAiBQKWLvhxFZogp5Q7zbyjrDaNd8aY7q0d6C2oW8o+qiGA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.252_1609657112540_0.8330565039174069"},"_hasShrinkwrap":false},"1.1.0-rc.253":{"name":"@leanup/cli","version":"1.1.0-rc.253","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.19","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.253","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2QZVFDqM23XYn0WJm5QbNLkPEqvACj/VpU77Yc6QMaLXfL9EzbhXQf/poXVKaHaMQ3m2cv+4uSiVb/GjNdlStQ==","shasum":"8332d618bcde65a5221030fd0f1ee17abc12f5fe","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.253.tgz","fileCount":64,"unpackedSize":137903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8XjVCRA9TVsSAnZWagAAlpAP/0utbD3nK4dpQHgkjDA5\nvCH+LFCV6k90j3F2hupwzavkffl2fuv9/A6kSw8fFYookrz3z7WqzX+cB7Iz\nN7vNbL9/Oe7nMC0hTV1NdJIMaYRTTGOFBjPYAlhD7DzJIYtO+POrJstLt9wb\nT+H+6N9bPumif6QHC2ccBdLtqbUxTsXz17xlvyKrlhHwkbfvEop66VNgKi0b\ng5flVPg3T9nWfN2du14E65NJ/xbl2E97Mg1dNidJ5kWSxoZBAn43ALEpO9o/\nvCdoIxAWzXH7szb4m0x8BURgM6UkWPXrn+xxpSdWSeHA/GAxN2FPACD9u6OJ\nfJCtONk/RQfYXcUsdJX5HJtALlsp7TwZ0h4EqEBfS5ukz+5FRSRjCl5/Zt2B\nLtcUMm2FGDF4oVGU/tWSMoAyRtk2JteQfLNx6Oat2lDBU7uZXQI3fbQNsZKs\n3DOCChLmaPT+Hxh8Tj6jZYYqfoSga8UcZH33o21AMfzo/p8se5l4CiO3Hdop\n513NgL3XyzXBh2dzMObO3vK8Do5JgtMpB9ki1UphEVsEZUMV8mucnxcDchdu\nuS2V6K08Q4zK3bkL1BlGEscdb2c1uEigEPvdNo+5DKgB6Nt4jSm8k0z5lZnb\nIrE92d+lhIKGQOCf7ZzCVXbEZixaaK0+/8vn00n0baqlkNFHKyTSLnFZX1AD\nWhdC\r\n=7HLT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGDgVcs2DKnTragddvbeqmQZYXAO6qFjSh+sUaDhWO3uAiEAkhIziUm0OT2/D1s7gZP/EJokbWfeVGHwI2iFBpBDEG4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.253_1609660628901_0.2737931377586711"},"_hasShrinkwrap":false},"1.0.81":{"name":"@leanup/cli","version":"1.0.81","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.81","@leanup/cli-core-format":"^1.0.81","@leanup/cli-core-lint":"^1.0.81","@leanup/cli-core-test":"^1.0.81","autoprefixer":"10.1.0","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.0","less":"4.0.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.2","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.0","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.19","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.81","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-eTJS8z5tpSDAmJokt7zELg6vcIyLRZAkZLXQlUnXKB88vlkgfhtHMy08zI1+WLAgS7KO5s5s3Gv9uWMrNwKS7Q==","shasum":"629117886c807379be9b90cf15baca83ea75967a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.81.tgz","fileCount":58,"unpackedSize":144138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8ZpoCRA9TVsSAnZWagAAPIkP/1UngH9MH54OWmLzkGvb\ncb01Ct9Tw9EsISBciYgNXnbhyLB6ZLwz/+eOf5GJGhUWKFw2Ngcrcm4g6+Gs\nbVrD6sB7VzLSTM62lwEYBMmeEJJTPXCYUdZZhS6RClHMtWu8u/9Wj5MTWB08\nsxTdes/97WSP5Oy8YhDroNYSE4Ja+W/pyfRLeWyu4PpZ1dTObzqyvg93zVsw\nQ13W6eUILWHx+bi9asCaaKukOJMvCI5z3e+z7PhtfZnDShNrXijKB/lIVps+\nICJ3bsCQw+RpurnfzdgCZJA67l46XpH1BwJfrAUblU3/e1qE7F8zuo4FYsXj\nIoGsl2xNdt65fhe1sUN4tOKuziSkMC/w31P6T8EiDr/iC6wZQz8/kjzKfgrO\nnAX8E4D9a2pNFjFzSW49Nzr3Nv+e/hQCbiC+j4LBlXK3ceNkdpdgALW/dEwM\nRAVDS8Ak8y9/hjQdy+lG9H6FTh0p6oFggzEBwmcASJ20d1cJrFKT+Hxu1Ldi\nwVEf8PmcqCVOcyTzmYiknie2TU1iq0HSdyaks3J9xm529HaZeN+2F5Buo4RW\nbzR3q9GhHTh03qpMa+uxhSnfRXHqQdJnz0kiEFeMsct1PrZEFj9IHnWtdv7O\nxQBMnSayhloKE36I0/MGOjH+G/pKVbOCVky/K7n7z5JDOq3jCvQCeFPBVsB8\nHSgG\r\n=cUc1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDea5GOXi6ViJmaCaumANZwwZkiXgrOEj4b6bESKNVSAiEAsAUdJQ0b/mP2q2sA6G4/0u/606/n5icN6KIwE70EM2U="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.81_1609669223844_0.4628762762410814"},"_hasShrinkwrap":false},"1.1.0-rc.254":{"name":"@leanup/cli","version":"1.1.0-rc.254","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.19","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.254","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YqcxNewXtSxJocYCcvqfdjLW0oAsjr/8JdbvjU+qCF7vXwxDZdqhZ14e9IqCX6k0Z5aEPEW+ZZr6U1bpH5BD/g==","shasum":"632090a2f032af743e99a0e857556ab775d7268d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.254.tgz","fileCount":64,"unpackedSize":137903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8ZrkCRA9TVsSAnZWagAAtuYQAJwgn3ZCMbXAtNsPaVC1\ntbBSsHneG0gALYx5qaor5l9M5aeG/fYLsdQ2k7AuvabnZe37gpXDc/bR/sOy\nPt79+rIUU7n+/C21sOHrxBFjOEMVHiTv4+tEZgeknUYtNUBvjg+IVa4tnZfq\nri9a5+sRJ8JzLmPv+9tjhQifmLf3sjqZqI+Wk9m4l6dPt7dFdzBoMQI+bKeB\nEgXr0Yu9Xf4BXFl4bFk7eIIaUtkZbs8h3RIK69FsJIj3TCvsWqj8W9B904OH\nKHaYmTnn0cTgtCty/InFqFmoTOwcUlGHHsYzlugGAo5i9ZmWx3sDLiQppzjV\nqR1g1o/CJej1Wd1ZGSKo1dp4p8SBbX3FBY+ejLOhHCBadMxEWRy24MBECXMZ\nOZVnXHbPz9PMXdcdrHBon+ZOPQx4j5Iy3YRA039TyMFhcfu6w7kCg2WsON8z\nbw/I6+PG51BHLkyOnSpu8ZbuTLqSxNrOCoc/t+7cLzAoTXt7YFbBMQi7BB9f\n1lc+wKhJMQAQhRGYbcB+76k2y6Kk5+O+7gTkS3l5mmNb7GX/GlUYgSQqbhcP\nP8Q/y7ftGwBUhTscs1PXF4Bh9I0BLo6vtaLFXyM+4SgsmTmvThspp/KsrcIQ\n3ySd8qcZAzjxVcFiY0pP5TkqO3oN2xE4NnbszvUPU6Gd0qnwtIDGFy5KIrs7\nv1cz\r\n=xDju\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDYPhg6D3z6URsTPL0tr+XKVhRGdPaqNzJyb1X0Ci65pAiEA/nP6sgEcDgARwregPS8C29P+LA6BM1lrMMMmWULYJaM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.254_1609669347578_0.7493250792301398"},"_hasShrinkwrap":false},"1.1.0-rc.255":{"name":"@leanup/cli","version":"1.1.0-rc.255","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.255","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rYmhWkfywjwrLmNPF+W6bbDA8Yn4Fg+i1yDyj/gOuQiK3vGS6+zHlwOJeeMWclSGfY5Mmy3QtTEdqOz7lnbarQ==","shasum":"3664c6756cac1e3d784c8a9787055ba1fdaed675","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.255.tgz","fileCount":64,"unpackedSize":137903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9NsRCRA9TVsSAnZWagAA1/cP/R13G50/k6fJNm1Upv+S\n648WdElsogFYFfnIOGM86Yl9BWfxYn2m/n3qKUOtYkat3Wpf2qeCfX13z7eS\nvN5LOFz/EjVLc5wb0Ilx520wzJdQaGLRgS4SJmtU2ENI1DtuxjOK5zqscFAq\n+5gdMhuKrFtOa2LFxpcdQ6DhPajBU8kkLdgz9gQMqw8ilIwkHWc0s36WieBr\nGAO360J/si6m9HWzIp4uMuMTREvH3OoRbYmTW1ub1iUN2m0SUUMZHfYRJ+HA\n5QVLNcZkNjdlhCZBP8Y0jwSivDqXB4ZeN4QxlznLWL8I6GnQ2tJLYAHdhk/m\n3OVKASIUDdFPvaKsM4XwBORSokFv9DvPVh6hk/laj1zorPxcQoyOFDHu+pFw\n13M+L6NvNU9Qy3C+sFHarXOsknHVchAUd6xY4sKpaNQebljErEAq4ujo6imx\n1/iM5u8W6bWiRm+iHZL7nUgbaBYJpOStV7e+PyTDuOmYDyJNQsSby8RToPoW\no7WuwlJ7+pqavMmmExRRUBJ/VkQptHrWvgW0pxdYrvnIa7fvp2g4lAuO36A9\noTiC4t342pk15LAZPnVLSkmj4u+bgDOFkBhgOgJS0Qa8sUx/U7jHqfeVql+0\n8GBb0XuLNtBvF9ZszcMmpmytwYuG0N4mAfVv/fjDgA6BXXx9jUSGtwkR0i1e\nZhjo\r\n=UBp8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHelnoVz6cfYJEHzMP0/HMadotqHKyXdtQ49JmCn4dMgIgbUc7XyaX/9xvRFiBqlkyHouE5KjFl/yHAYNXEFad+C0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.255_1609882385376_0.5821620447530722"},"_hasShrinkwrap":false},"1.0.82":{"name":"@leanup/cli","version":"1.0.82","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.81","@leanup/cli-core-format":"^1.0.81","@leanup/cli-core-lint":"^1.0.82","@leanup/cli-core-test":"^1.0.81","autoprefixer":"10.1.0","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.2.0","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.0.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.2","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.0","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.20","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.82","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-yEgOpv5ahNuXW9pTb/F2fwehtMaEfCwhHY5GQgQx7z2I6bKMJ2qoe3P39yZdGSKP29jzLk3OmHpYIviOV8xEqA==","shasum":"d2a1327973ec673c3607070f5cb33f1f0ff3b737","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.82.tgz","fileCount":58,"unpackedSize":144138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9NuUCRA9TVsSAnZWagAAJ9EP/Rk+AdEHt4HpuMyI5/Fx\nvvwt4wOSppvQNqZdRt/Pad5gp7BGV6QtAu22DsM0FA3Og9dj3hoM7dibL64a\nPtPv2U2JYGlmaGg/TucDIh8E4eu8XO4vAFzjOiQRqw8zQ3D2tkz4zZ6PkE5h\nwuo3fTzYRJM2xQ71NMVd4lPH0moDkiWTyoaf0fiHU065M0D7clyJhSQDnb9l\nTaZOtx5J/GEYZwORW8PX+QamnpmwQlvc2y3FH+C8qdwBhUgq73REmBXfXXuD\nfVllS886c3y0MhvKr+HHRD35LbxEFcopAv2raRIsLqKCIGLCsqYNT8xh43WF\n/hHlDn5JRWreK7P1yDZ+uJJ0o+2xMIVvlR57rF/tp4bFF+b32dN6zP2z8dTn\nN3pnIkWOE8Y/XEbvlD12+6L++psZc+IxHwnNyNNVgNFNxolnF4/sQWQDQSON\nH4OgC3XcapaeZSkdQxpIXChA4Gkc1eMthzGpfPPDBAN8yWA+ufIrZGkg9y2X\np/CBtIntrghSJAYLjnhWua2dl6njG17nRE9pl450j4PtV81ei9icxaLPDj8C\nz2JOZ91GvOiArz38jH0TonvHYDjwK9J4l9UsFb7COG2fCD+MZRUFwIOb0Vkl\nai4kzBEwZEIzsfTPRPdAi9DmP4RgjBCfuDEhq2bW2Uoi/cSMVKuwpy9KJoYq\nH7me\r\n=fsfN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4MQP0Y5SrSPZxB85Ofc8xom1XVwpiWt+CBkJput/qPAIgPYSZoV5vofnDBGPco0BPwO6JdTtZWrA3OrKjqQflR50="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.82_1609882515345_0.2080255654977372"},"_hasShrinkwrap":false},"1.1.0-rc.256":{"name":"@leanup/cli","version":"1.1.0-rc.256","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.256","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-QiGQgcGEm9EyayH5aYuFwOFtFakbQEGpBYuf1KR4d8yxdnKXZDypo8EmyV88vis5XuVUgktOh0Y2TWh18AlnYQ==","shasum":"df3aad6de7d1d0ac6990fb26c3d310dfc2b5508d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.256.tgz","fileCount":64,"unpackedSize":137903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9VvHCRA9TVsSAnZWagAAdj0QAJudg71rm1Bz/cm5Ywgb\nYcZcjXje7Vg1qLXw+LWgeoc2pEtMm8JuPfMEdYfKdj8uRzfnBdRlLGWZng8r\nciHcbsx9OUiOb9rakUTVKmifrwuXPX6MIUxVE1kaWWmfMaEc0O4P2meCdRew\nSZj2EJ9uPQKx5SbRB2jV+5Lpep/ufy0gtgfnEJolVJUA6YFev0ES23ED4AfR\nmuV034AzqXExoc6qpD+0fFk+y5CpmHQUfS9HcA1W0Oe1YUpv1hVM+LU5QdWi\nguE1gfidNIZzLHOjWxW66Sm1zJ4d3rpp5BlKYCPP/RZ4Wzaqg/+2XvsTKDsL\nbyRdak6G6KT+vbNhu6jVOSV5zc0eklPMHQa5lVfqZJv9EGnKYfsOSVIGi8+4\n8sDEI9iH7LRJhqqqu+EvBSBhX6FsRaVhU9oQ0cplhxbMrYpYYHD6EGmyQoHd\n/xJdWXUhjBBSH+GBKf7g01VI8i53ymvyh48zLv5lgYpjkot95R4I8OwenoQ4\n/6Ub5asc1l2pY0rAw8g1O4+2SfxDIUueQA4/LaFSRQvPlRMTmmibrolII7LN\nJvRaqCHa8hFsQ1KxgTIgagoC7EabSP53eBK5D0kgSSDJFZREvyf8CIWgBtn0\nSF7OkxvDYdzH5pJiioA8nY8Oav0jYLrZ1+776yfwiIenf1Ovw4t8QD95O6se\nm5bl\r\n=GnG8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh8vLxTuiz8ppXuP32Quv/Hs9nTxGfs9WfmpofaOgGZQIhAK8doAU3s2TKfyaNXrvdWJysfmywUHHxOaprRA77YUNb"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.256_1609915335120_0.37991235474896"},"_hasShrinkwrap":false},"1.1.0-rc.257":{"name":"@leanup/cli","version":"1.1.0-rc.257","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.257","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-miV0f2pUDzzB4ZchHev0rCOIAZBflRnIQpP45JJ15TYmPR1LlyL/ZwAtgaDA56FInQdGA95LMyF/YzxFm3G1rA==","shasum":"a44e4eb1d325a84f7ef1e06e4a43df95c964422b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.257.tgz","fileCount":64,"unpackedSize":137903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9oidCRA9TVsSAnZWagAA1V4P/0qcp0UTAmzeMaNVEPSF\nOtS6AnvqcGSZtvzi/BVvxzgJUvdraRxLzg1LpESnaSog4UcBD/aSO8tmyQQG\nmM8/mBCDSuEVRI0pHLrGph+xl6z3mSGoLdcSDre3COGC659KsA7UiXztjuk/\n6iJ2i3sAZGnnP/lbu1rra18uHYRUe7mfGXHjw3xj/rK5HOrtxZxGGOkZGqWv\nY3tE5W/MuVZ9hrHPkMYAHdsmmkZV2U6kfKSnYYDULRvavUAfAGsGHtykf6Bm\n7vxm08wJxUATDc73mU0kdqXoLgZRAEk8QT/RUZZ1/B8iPOg+3tqTPO3LI6nK\nUczMEsMNWd7LhRrfBgSfLsFzNpxZ8D6LpAX+eubrzGz43CeO1Z8dNCv9Fm3h\nyspxPKO7ErCyF7ZCXRHlwQ8KxXlvnRQ1bkPxdcsdQC/n/zhwRntGjdxI2+55\no4/Hecv+y8aXibi0vIFvMY3CthPOpW++s4BPnv2H7RH+xP81IDc8OOMRK3fo\no7YZwtCWTjnwres0CC1PTOJF3ja5zUjm1qUH1ybN8MAtHr9CueO9c6eWD2LA\nIrEHnHnPMWUXLIhX78M+HMYExNpJq7odLyYGH1IUykdVx/b/tIzrwJun4LY9\nLk7DRa2CrMggYjPpcb7EvtzvfsBjp2Y8TpviC2t0ndXZj6NJy1nzsiSXgmEF\n8diJ\r\n=PWLU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5hzh8N2NxHOlaFFdygpKmjCLZ37W4jAgJgN1NSt6/8AIgf3GCJZlaKWCU7UoFxFUkqFaN0ei0WCtmdVsSgqBGJCk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.257_1609992349357_0.6272852464341145"},"_hasShrinkwrap":false},"1.0.83":{"name":"@leanup/cli","version":"1.0.83","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.83","@leanup/cli-core-format":"^1.0.83","@leanup/cli-core-lint":"^1.0.83","@leanup/cli-core-test":"^1.0.83","autoprefixer":"10.2.0","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.0.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.2","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.2","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.20","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.83","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-VA2Rgumxq7g75SjQZUIPgo77wi53IPTo/MQTjErTYUVg+caEEC2bekbY9D/XkrE0a6QwX/LQGlV05yi20NR3+g==","shasum":"8ff82092ecc17904999e7f8ee357f0e97ee806a5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.83.tgz","fileCount":58,"unpackedSize":144138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9oktCRA9TVsSAnZWagAAqugQAIfQlDwGzxZd5GOCZba4\nmTEv1cDu/6oHYWE8OlvltLX70WSxK2eGaZj34SDOiVZNqPE155k+bBbR1Wog\ny1F6XgfRTvQSLHGfJNdvB7upHh8PFbszPaGbaTvi2a6BN2q4VmaacPqBNyh0\nMM3sZ0RvBafLRUYOlHIEWMcmIQHqDj8JWEb61Tts0kjVtg8HQrCX87WCzJWR\nipS3dgIXtjRVbufKTZO+njHmes3fcOpL+GCvhHSJIdHxJ0HxS7tOFdGpfCcf\nSs7hciVKkR3gAnVDVMeq9oWOgzqG1SEl7dB+I5D3Fx1g+HRkozPZbJ5pUlDa\nAYm8MpB1IRQh0Eoh8UXAdeNf8X/ZaHWiTohnj2aouqbM1QDnuV/ktlTgz1RF\nHEo2sdssJZ9zmVy3qWzgY4/wAenxTcic3Qk6NYP5FYHZFmaA0cEjoWcqW75e\nuYsnn3yTvYHAF9uMS3hB65xuPFhdFqSFjHU5W5aEWKWvxskalgdgoDHVU1K6\ngCRt2djA+aLdYXrz80c+sR/HNHkqj9tEfX/zWzRTexXTCoJ6HpSCn5i1iZlx\ncnEdE6zCvkBluyI6RQvqc57UP5t/yEklVbXd6ls8zJJ3+SYHQ60pxTOei0LL\npyITDN4L7YFCA6YwewJzLC+YqPrxcjXDdFQlikX7JppSFL6KR3MBSrh/6f4F\nZCeI\r\n=9Kmx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDmFbg4fvBvsH7T4CAdoEu1AVJnQeGfZXsCRPAkXtmcRAiEAjNo8u328NgQ0KyBmdDueBp/DGSD6Pi7LpjZRMPPtCnU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.83_1609992492704_0.9153020853255514"},"_hasShrinkwrap":false},"1.1.0-rc.258":{"name":"@leanup/cli","version":"1.1.0-rc.258","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.258","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-fidXIUwsASeramaXogFYkqInLsqHjod5Nr8u4mYH5c4tb+gV5KKQkvROLKDrzFkw5rMnTYOkaLLMJ5tyA+e+FQ==","shasum":"bccf14c1fb2ce0c6a158ba313885299eb4f855d9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.258.tgz","fileCount":64,"unpackedSize":137903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9pVACRA9TVsSAnZWagAACRcQAJspO3plVMPPDYc7xplS\nOpuQJ6xUmmTad6p4iThrL8i2XyvL6ImNjgXTz81ZLOrCQ4v1O9T42XJxBhWc\nEumeXrPNYOLh4ksaSOpJi/gBADwG9M+6dXfI+TgVcqY5gkhgYFzUoIHr60xi\niSloFnXxEwL4DUA2rRgKxwIZce926HqFOMZzQonCfKWdq8obq5q8duzBv0C7\nYui6TVWbPaudE2ut0K4d3Zsznhx4u+y3wMM0bUSOTmn6gy3K2DVKIC1iPueC\nZtMX5cBKjGcu+FZDOnccp6LsBPvC16shO/l+xeXTaox2aIfoj/3wGPluhxmP\nro2XoboijYDNq0h0li0UM7y4y6ToTTSp5JVZJVF1FHem2vvCl+wJ/DB6MbKu\nhFWRFNZtBfu7QmQMmZfgOADFGH5TV/8npOwoIzaCRtybsfJV+lkTIWnVUUlQ\nNY9x02Jfk9t4Bm6jZA0qRz1rYZpXSfR7YPTcggqd04qc/OvXwPXnz+moL38L\nXytY0htx6s3PWUKmivZXwol420lEIhP6QFkF5CDcHJZ6J6vxRdRPhejOk1nD\nTvGGP5s8tvUP3Stdb2Or1BIuE5EJMkBEKsfVK9op899b+HVNN1Fjl1gcl92v\np6iEnTiXM13uLtyatKcj+ea5E25exm3Y6wUCjP8hi0wup83dR4YHH/DKO1Gb\ngomN\r\n=nK9u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYIvs0eq0gYRByjb7mRlMoyyXTvIPDmxALySa4L9MEVwIhAIwsYkH3IfsZiRpGzpKAKkPXmE6c6VG4YNH3HX2ipwZY"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.258_1609995583592_0.519504457400942"},"_hasShrinkwrap":false},"1.0.84":{"name":"@leanup/cli","version":"1.0.84","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.84","@leanup/cli-core-format":"^1.0.84","@leanup/cli-core-lint":"^1.0.84","@leanup/cli-core-test":"^1.0.84","autoprefixer":"10.2.0","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.0.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.2","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.2","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.20","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.84","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rdHsJFSunjZ2nWnY9GsTRb+MmNzhaJKBzKtqRLp0Yp7YUuVGMliCA80S0yO3IEttjsgFTn77vmSR++GDmO+I+Q==","shasum":"d2a7d766f67a4184ae1f286482e67404d6fc8575","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.84.tgz","fileCount":58,"unpackedSize":144817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf92wACRA9TVsSAnZWagAAIygP/j9nwIOtznWTXGzr3Y9s\nrq80Il6sOhWD/KJ6xSL9jBpuUUqI3w1zzib4qmErx0KVlO/F+Jgrmt4fbk5B\nuQ/BOpTqmKCY5VkofKgkvCdHp8eIr6IsOWWIS9nzxhDDFWfXpYbE7+yXbM3z\nnwcWIDS2Cm+BAHilhjxufXjNC5SS/P1YmjuTAElWn5vbj4sAcpqGoBGSpXn+\nlSrp8D3RuXI+SDQC7fEt3EWBKgfiHONUT8tqzP1IB++BQdSIDKE1BZoETyho\nsjf5UpxCEgrFLAGrmoGf3DX6yRsRC2+Du6NEaGGTHp+AIGCGHF4U8e+C+qpI\norSht+eBCsa11YFWSp/dNz2bqTuNuYScXTSoAK2eRZOTewMbR6oqM+1dH7lN\nsel4K7fEiTdSNnmv7cJ2Vz1xNhqfOdBQ2dxzCcgLhY8QCcQVi5XXftHGzj0p\nJN8RPTErOiE40BoZYlIWV4r4Qx000sAfRkmqYnmCq4hx4/w9SUMF/i3EadvE\nrwJX6DSY3WjMmVoHKtCR4v1vroPlaM+6N0FNNQO2O4SvvOGgzTxauJodejiq\nBuDWNXXKkRgNaWNgLiR2id60UNgyystJAJz8F40TQd1KVGxCibUu2q3SedqM\nISKUBTxrK7+ON4o8BdN6gKa1nPpiWY/VnU3x/HitXgCqVtLkGqd6ySZNIvjh\nt52B\r\n=UsYj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB/K8ym1pfX2VWZ5n/Ykdnme/JfFUYKdFtFxxnJbn54vAiAmloj9C86WBy6+NcnTZu/+n8a8pi8duldULcE4vKQYUg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.84_1610050559502_0.9843518142861256"},"_hasShrinkwrap":false},"1.1.0-rc.260":{"name":"@leanup/cli","version":"1.1.0-rc.260","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.260","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oKisH93968lO9sp5HxnXP1oLbQ6yPj85hHwbeKiRTQrO0YK/vSUIZ6cQDnYkUI9rvNJZ6BL8tgEYxhK6Fn+nBw==","shasum":"de3ea9d5d40d5857d58e3fa89b5dafccadb194cd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.260.tgz","fileCount":64,"unpackedSize":137903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+idtCRA9TVsSAnZWagAAW+UP/2j5+NHnzF+oZZ6U9tMH\nxMfdhRHs75ixQD7oMfVa9IzXJGCfeMqgxZPaqgvwyvmiFoYWHR17foNwA15Q\ndN4i/ulrc1WfdpL3SIgIlbxDDELtLU30PbS0+ZBuig74yHfEcwt0myfRLPyu\nqIKb1QnvV8rgOPD4BT87GGW/Wp3We5AEsF+us6TZ3c3eZJfw3RlFJz/1R5NW\nvUbfb9gZv4Xotb3AX9hd+VU2aVJSYgZ6wT+pHVr4JR7Rm0ErsIp1xPLMgTxZ\nP2whtJjzAJuyR/7GwTANW2rvRdcdpm1gekfkfEVvZYGpUQeAaH9niPm/fuAv\neyrDXLh3YWldZ0gbo4KwSkK68fll/2Zrqwnx31jWDXgQlSRiP6bQNvUqZQ6p\nglXZHklFSvmOWipyOYM7sLEzdF31ix+9yNw2u9ojbJ2OIRKKxMp2T9xTFtLP\naoyrV+B1p4pHKK7/rgw8Go6T5mcKlCGc313OjyNyOZsvVKpCHlQSG0TLDB5t\n3IriB/Ok2JjbzNlGdcMY1UijNdpdUAjr3iAg4sSwtldk5slXy0XOYeit6NRD\neyyfI1oh6lEu3lsWDaEylQ1D6fObSdFuMOcbQyWPtCdQEisM1AFn/DQo67LV\nOzJPfXKBjMwt4fq9RI/FvG8x8CbWdVGsaAdVWi72SCijoXRv37LTg8ZngYNA\n1E9P\r\n=35x/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBDgiLFMuwIgqvhncefyDUoEvp09wJCG/oSYyPS8puswIhAJ49tkh2a99o8z5MKfX88mfkjteIPjEGFpyJrECvf0t6"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.260_1610229613114_0.12718859038907349"},"_hasShrinkwrap":false},"1.1.0-rc.261":{"name":"@leanup/cli","version":"1.1.0-rc.261","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.261","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-32TTP4TNks9Q3iCd9iy0r54ajQ10LVCGOh6fMmaL90PMTUQjzKmVYkispcXU2fh3HTFKl1AVxk2/bwoApve4yg==","shasum":"7865620ae2181c70dde242e315f1f42d5e347e25","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.261.tgz","fileCount":64,"unpackedSize":138777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+sQMCRA9TVsSAnZWagAAhhoP/R6umg6w36MUbao+rTeP\nmjtr2nxaF8DPySlwyY0xP/xX4yJyQu4zEOqXgoRtdlURXEezc6tgQCeJffNO\nFlIxOdfgCLZ54rAdh/WK6WXSfwo6Jcyf+fwCatpBQB3AYBbI68vCb5A4+8fH\npTampgVhDy1/6movH+8N0PC78zw1J1Yn9sNOyJXv0zMg6b54+HQDVNfAlBlh\nGi7c3ktgOorPL4wwH5uSRsRWklRi+VvAH/iG/FerxvO85h4vwZg2Bv6nxFaM\npfgv1FqwXF6v7Q8gyoC08Kdm90aXItOEKJhS0c8sv7vtQTXwKjGJ0+p0fT5n\nNypUShMnaW5lQsQMi1q8Mo9YmOc2QVzvbBqQ5s9JViNWBdgmQxbAr31bO9Qi\nNu/WjxVCLPt9nJBOCOtjcvCk3iG1/jmpEebBRS1C2qQ56HjNdFXpdcp0KezF\n5HQMz51am7sFgMfwd+uczND7xdOG/mFp5YZbxmCf8VYOxvZ7LVyoV842XJwh\nMtwawmrI8bkSpC4PX/V4OfmcGd3mqtuLITOlEzS7LriBnzhiefZwagKBIo1O\nV3uPwHtbE2Pw9PH+LNfPvtkkRIZylWSFn4mZswwMOJNi6ZEJ0KHIxBMxmgto\n/bBRHekOzCbEtQNcHoCvUY0PfxiWimJPKlgrrCAbkrpbHq9/HkdXPBIYWwp9\nPEii\r\n=lE6l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrDQYlMBGux4oHMRb5lp8+Ba4MKn0SprRwPaxj+VHqZAIgbRSR/N8Z9T/uqudND8liXaspkxbeMLZvJ+Iw7Dov+RM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.261_1610269707591_0.2215216729719951"},"_hasShrinkwrap":false},"1.0.86":{"name":"@leanup/cli","version":"1.0.86","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.86","@leanup/cli-core-format":"^1.0.86","@leanup/cli-core-lint":"^1.0.86","@leanup/cli-core-test":"^1.0.86","autoprefixer":"10.2.1","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.4","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.2","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.20","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.86","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-L/+dvOoBlNtXhOx8fchJtMoQKg/eQJ00Z93cm+1sFepys0Pqq3r7x57byEwpYdaF9nwsz+4utluLNU+y33W//g==","shasum":"81f52bb576a8079ab52b3fba79db1ca31137980f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.86.tgz","fileCount":63,"unpackedSize":150409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+sRzCRA9TVsSAnZWagAAAmsP/R0i5gasLETA+6TAb6To\n2FyL7iaGpCycRn8A0xbddimf30F66dsizhX4SehRARN3b0fWZ7GzBwQnmpEA\ntbv8fSq019xOnA3WBeCI33IhggHU4TzrjXtsL+9uUsHoR9gCgWiDcYb1uHDt\nyu47smhGisCMAxzJNdTsjDD66B6t//4W1L3xsS7RwhtbD1Cl42LDzU4vGSEi\n4IGRz5QaD8qIrlyw9sCgNw077sHGsNH55TgBe52DMzkcWQF8A/nC6qeJ9/ex\nE5F/g10yM2Z/GsIOYyzy56cSjkP9IqFKup86k8czmDbCAlOyL2ugk89QuJVE\n18UIe3DLMpYZBsSB5mmGY5ZobP4kfDXOgpHEDUG7/9//5zWsqaDA+GyOXuGl\nn9jeDvrq3aPMQV8JvbVcq5MsduDd+scvjd4l9k5evtFlNxuVLI0GFZOOZwd/\ndMYz6Vs1SiLLDxqUDNnFDkS5PH/MlXI4A02ESRSqEbvheUfIqhLTGPXZuUby\nRd/uxoEva0u4qxGb4c4IDm76ZKGbscxTtSWA4/CDNh10KENaeGAPfzkFHsNQ\niqLo9/40GXbhQWPncbIsaXVJuzLZpTzZ2OwFg66LzHLHHEzB5P+vks/zzgsj\n1o/bj3bHNTizpDT25LsBUUyUoQza2G0NF4gvA6K2lJyNGtM0aQ7B9x3s7Bp0\n2DKR\r\n=DNeY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoRbqgQuq/01AwHNTTtbsEksa/xFlfeMdPWggZwsM6kgIgKXF0ef6NifazSk1mRt9wqJDiMpj7ovcRZ3UY7cNXV8U="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.86_1610269811059_0.04601025227573774"},"_hasShrinkwrap":false},"1.0.87":{"name":"@leanup/cli","version":"1.0.87","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.87","@leanup/cli-core-format":"^1.0.87","@leanup/cli-core-lint":"^1.0.87","@leanup/cli-core-test":"^1.0.87","autoprefixer":"10.2.1","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.4","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.2","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.20","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.87","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-mj4TgsGnTi5ZX0Hqb+jPijhuUItkN2yMx9SzLogaSOa8yiJMnzNqmOUMG01TJmfxi8TC0xRE4Huv/7TVeKedjQ==","shasum":"83fffafeba8975ee4fa32e9eb391496a94158384","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.87.tgz","fileCount":63,"unpackedSize":150409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+uyGCRA9TVsSAnZWagAA1HgQAI/EPmF3upepliXJ7Msa\nh+8G0BwMGMLxcyyuJ9EYPNVO3Xa9bLOaUf7Sf2nDP0BQwJ0A7fa6wNKp74Tu\nvuIuIBiYmuS57rVp9YQUnCwzCOUWPI0W0UynpJ8w7NBsyA2i8zj0E3k1VK3i\nV1GNO9k8F6VFIfVsd7kWMbKmUEgrqo+hORFd9JFo1We6NqlqX0+iUeZC7NWV\ng8VtilLLH8+ZTlE+q06fnL4yjMfSrAnQ0I/FYOXgHlMRwNSJIgy4zpN2bfJN\n63a1plUoipALA/ZObSq/zf0FqgJglnVAVJSc+uUaTQ2uFxd+MT4vVR7p1Gux\nBjGnDj//Ce9m9fw3AIiTWGc6JtVoeJF8t/wG/hZ27lzqQos2ms0JYm17Qi1h\nuhBV+o1yM6PwTrFdVHoEQsPeYYdMJvln53iWWTpHVWzzq5/wsu6FmOfo4fkJ\nkTm9SNA4ymtRxOgshyyEPUqaiVy8j8uw9ippxMvEmGPN8zTMDwhg9+NFexgl\nEyEaTSO5vo1CGxidzztJ2sSN/vgE3CT9Hzm2kXXt/YhmLkL/7khgyajdnriK\nY9AwDcAhoxjM6+sEURAhjo2gMIVkIOWDqx20xSxHtc3PmmBzwnQk9v9RUP25\nrtJsd8FuFS+KJWXG5FvjhAhtLsQR17RcA6tNThhzwQ3biu8135oo8jzF+dSm\n2VKP\r\n=BDyT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGzkirIwu428LQZhdXoITegy5fG3xJDMQVtY88BMBpUgAiBCjTuucAJw1kJNbJAmKKP5LX/EkvwMTUy6WIF3zLBxVg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.87_1610280069671_0.9745817412802453"},"_hasShrinkwrap":false},"1.1.0-rc.262":{"name":"@leanup/cli","version":"1.1.0-rc.262","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.262","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OfATtcIBqxpQDe5ikGYenW2T9pqSs41mjoGjnPLp/OE2zdwvlKev3LLXRpCHV3w5b6mGzBF9XooCASKdTVEopQ==","shasum":"85904d59cc7b5335164888f5d25ddad40fe75408","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.262.tgz","fileCount":64,"unpackedSize":138777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+uy7CRA9TVsSAnZWagAAuHIP+QDXiqJVgdIzxsxzVb4i\n57mU369e5QIT6T4DACxctRSWMi7khmj2pfqtBpRSs9mF5BAiyHa20MSUgXwg\nWJcOLRtD3Hp0EEoEI8vx6HricTwNreKUcWBJyivypqamzQw1kt0XDFFvs/Jq\ncOa7KPo3LLhEAHXaUDPhfkQWOgnbKAUG/g0wEj0kc5/7H3V6hJVHc78gDsQq\n3qMW6fpdkD+q/Cjlz0kK5rSZhcr0BKdWvIaZ/DcAsGVMTMtPRbSv2bjg7r8N\nek9dScVFMt/NrX/U+QKFtJbIjQAGXIwsBUUo1tJ/YGWtC9o/zH6dKoo3oCpp\nserhGqyUIkXMxwIDF2B7fRceTLJjmsx9Yig2zbB8u3Ndcf+qyPWAf94APkBJ\nAs2Z3dJjebFGXB8NDb2s4HUu7HrqnmBAi9Lv1qvshjPRwquimX19nB3Aiijb\n7kqukVBATWHfuJzYmDgvBevPQrXPIsriVTIJoAWs3/03cRibEZjEdbRFMcl2\n+8hnj+7zIIt1Rs91qoBPCb8gTf9wxSd8Hm2zKi8YF7qtsesdig1F8ot4vuw4\nZhxf+DgNCn8RfvhPSKUdfsXZ64SoOfCnZ17qBVB1ZlUvcsR/NP4DMwqZu3tg\nf7KbtLv1K6thAH7rzocegtZXEEjLeEhRYvxaZs7QPZ24z3J3hmfgeIQfDg2m\nlTYu\r\n=bTL2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCB1lixZE1E0YmFLTXLC+sIqvIjhKcUiUu22+UhOo0xGQIhAIlf6Jh1Mk01iVhM842Mq6VUM4XR0QBDrBns5Ixl2eDi"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.262_1610280122556_0.3029343633811352"},"_hasShrinkwrap":false},"1.1.0-rc.263":{"name":"@leanup/cli","version":"1.1.0-rc.263","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.263","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vRlQfw2ptlhQ7QMUsLzCRNhhjLXRe3pm7scCqTXR5FJn66YTP4BPNpHfjD8t0B2ScQRowFjKAhOyQQZ96Rxv/w==","shasum":"2bd66a34c6c442891c76bf2755a88b2aa48fb58e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.263.tgz","fileCount":64,"unpackedSize":138780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+3vCCRA9TVsSAnZWagAAzAYP/RfcmI6Ni1/9x4/yXhv9\nvkCis8RewX0eDlO/A/gvEPxs8g5IBz8+j7yzthOp+YckKFRljEKVIY+k5lzM\n1vuVQZJ7BOd5AfnsjI+sQb4ZukO1ZpQM0LEqGTpviMqGKWEFgZXoI1DH+JpO\nx9TjntsSnR9+8IDRU3DUYwURGoPiiBAyJfNtz9oj9W25Z2fG3lVjNp1f/62f\ndSEGelnFqDNBQC+cPIv4UkzyJ7KckStL16SmAIkvgn7NgDrabxwa5DVzjVUc\n2t/tQPjaZ3gUF5NoVan3RhGfbmTiSDNili1fX3bdexTjAqzSs7Raxcia9eDC\nIVvt0febYjXITXmMYmxlutzaIpZWgJLtJn6j3x1sAY+8xo4mwMGemYYop+7K\nbh5js9OgCJT0pZxzznO1j03BWXmP6754DqwilCuU08rN4WlXXrVCOe09PQDr\nJQtAyI6yGph+7dCQfu9vZbiULA8jRqsLaspRLcxC1PHl4CgJmOCM/cgG09+P\nTxTQV4+bmTyN+bw4rKf1i94myczM4mTa8aZ+hSrg7dwsMhMF82CCOHOs8kVO\n465gvlpUjnngC2hok20TVkoWFIPJ8YYqDqRSQ7TKD8j6qY0FGgt0huoPJ1gK\nzdmZw3CqAA4lt1IxJXy+2lO4HuXDmOuMHRsWM8Zx40t5sFgxHtffMQ3A2mMM\n/Trc\r\n=4BLb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA2R1D7+kv385qYBKPxREwlKPrNE4dLLI3YMlQoZX9epAiB8uQ3o334bXDwUxWS82iYbdXw71VG5LgATJXlUtehBzQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.263_1610316737539_0.45976338214775425"},"_hasShrinkwrap":false},"1.0.88":{"name":"@leanup/cli","version":"1.0.88","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.88","@leanup/cli-core-format":"^1.0.88","@leanup/cli-core-lint":"^1.0.88","@leanup/cli-core-test":"^1.0.88","autoprefixer":"10.2.1","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.3","postcss":"8.2.4","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.2","sass-loader":"10.1.0","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.1"},"devDependencies":{"@types/node":"14.14.20","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.88","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uo8DAS/hlcNVFOUy7jTtMhcxXvYSWqTnKwCDceRjUhRxqZ3sA4VX+9Jt0C2xYkMDymbeOU1FH/Rt8bE/Gv7Nlw==","shasum":"d505712bfec22e4fd4dfeeb5b02c9aa759d33168","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.88.tgz","fileCount":63,"unpackedSize":150412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+36pCRA9TVsSAnZWagAAopQP/Rw9H6FxHo1+FFDbBtmb\nypBfLwxvV6LiduG/WDBteJn5xHqwqKl5rihDFvPXiSsiYu6rLH0wIhm/HVU9\nWQmr/ny5CE3myoPcEwO1xw7I9bpe7bkzoeSl5OYOSRJe79rdlQ48GfUUKM+M\n0MBM4CEv1xdRMLpWTBBSUQmh64IeCBj9YVUh/6Zd226tDcTXwH89UL+3ykPm\n67D5TItY7jUUz/wq405iyuL97vVoFcot+SU0i1PMRBvRfNUjuzmzaosq9g3y\nS5lg8XRno25nZd8h0N+45UhAbW2kUZoUpii9LDaYcAD4pUfigCRtvWYl5+30\nVRRp2+3sM5Lhu+hvNJQZWavzbckIZ+cX/t3ly95BeSWqlLLoRxrkMPknCqUB\n5sMhXuVjupe89LRxAYj+RRr6lOY+cF0oZPvhSt7yo9CkypksMG93Ro8WkSss\nqSMt3zHlZ5+suELSmTwB4kf2g617xqlkEO0Sk3SQVhY0JARmEgofvxHy2Cmv\nshf6xDuLEq6I+TTPt0m3eDxrM95T5HNk9JxyHbcM+Hol/5zf64k0TGv5XW8s\nZbu65b00V7BYf0NdTAEvf2283m42XkC/7075QhZXsBo2Wp4talZej08Mlrfm\naqg0cqj6Hl+O2XvvdD6kSCelJ8+gdBuBoEL9cHtuBTrpI3+SdcEZOL7KdOSG\nUg9j\r\n=lXl2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFa3oqXQvNw5929cQhQ5zV0yKRvODhVzpBeahyLjF7PrAiASv05cor2tN3I5FY6hYm0xRUgmB98YUmbq/JIXnu9UJQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.88_1610317480759_0.49359414795690104"},"_hasShrinkwrap":false},"1.1.0-rc.264":{"name":"@leanup/cli","version":"1.1.0-rc.264","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.264","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-bX2qPqe3ENLwupVaTb8B1I/XmQio7uOgZCxIVLSSNkc0OtXJG2MaThHCjnDwdSd605a9mdF/fRAWIh9XAN1wIg==","shasum":"85581c13851e8a4473b02532c7af3a2dae0e5e95","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.264.tgz","fileCount":64,"unpackedSize":138870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/NIsCRA9TVsSAnZWagAAonUP/25OQydJMWq6qYLJNYII\nW/gKJS0nH4hOieO9KQH9WQsqGlStJvWTcdVjuWrp6iCUNKTQ5Yf7As+KsvHf\nS+xAmgr3n7OTpFWfZz85qSOTITNgoT8O9/Riku1ktsK6Ikz39z9P6fGm7nSt\naarVETRaCpmb2ilglwH945o+itQiyM9KIB8aySjEl/WKxdQWL3PgpTL2Ocwx\nGNeU90gvT+VYx9KsIO1DFqYQBH7S5fPYQEcYHrtIuFxbDQwpWhPcgUCzi0o3\nilv54/J4PNhy+eFbucDyPl4UU8FId9vA/TE3UHnrZ0jQPSx6wj5SOCZrLBYN\n8VQoL4k3Fprzpwfwu+qsoxEtUN6ZcZz53S2RrByGZKKxq+ZCEDcJyUqiQ1JO\nOUxNuHCrzpvgmrpJhFSH26E4n0/PaCNeXNLB89Pueuhy4gG5ZEIW4IMRxcIv\n/dIGJeRi9UhZc0bJTmtYjWpCxTbO/duKL3RL9+bmOHC055dfzsR4Qnlqi3Xo\ncvEQsLh0ZoBQEUem7eJ7RcJKBTEPpQIWa5+/Gx+aKVMfWyQu1zpo9QI96XNL\nOUeAyU6Jcl3nSda9xsO+a4JiF2ITHntO6fjHSJWS+X9/9BcBRwZxkps6mAGr\nZ60I/kPFZcfh7gH8OhSDtAylYe+kYL1rzjIRZ2VTW056mEnAoUWGuTri49CG\nQ1Nl\r\n=TlTh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeAkc2Jc4alwsIy49oR1kAK/cwF9TnKV7tnSiaZoU5wgIhAJ8jED6PHK5ivxk+ERDj9XoiCuqsV3KAchJtXwYVaL0s"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.264_1610404396053_0.4842567922872345"},"_hasShrinkwrap":false},"1.1.0-rc.265":{"name":"@leanup/cli","version":"1.1.0-rc.265","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.265","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EFiPp34kGeKYbY1tHWNIM4dHPC7kaWuvnG2KO/vftRKqWX6/iCOV/v1g2f4HKSCHGyWKlZcsN4k2IZMouXp7ww==","shasum":"9372e1fb6aa829fce0f993e2cd4b8b5c962736ec","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.265.tgz","fileCount":64,"unpackedSize":138870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/N8BCRA9TVsSAnZWagAAp3kP/21LXQzmPHSswpRqY8RJ\nYtq+AQmatyrH638BQjnxvksx79bYRhDbOZmoPIZfnW/++WPvKjuYGiQ9TncZ\nJJ/AEBxpjnSOwdqLVaYFSZ6BWF0+15VbecliL6PS0JGQB05qMO6dBwzPTNIV\nxUs2ltDUn91bvVF5XVe0j8OFsDmzXmrS3vbB0EJMnFDVqgl0tSWvsxxn65PM\nXlsi4iRAeF/kDRMZfO1x9mSypPOqw4Us1pSltZi4dOGJKaQZ/nZNyleMe9Ii\n3pRmV2wvzqHpGmHF9IgZtnSLWu7WzqmG2mDv+dvaaAkbxafK2dgExQOez9rr\nUgBVvEgYJAPM5kpihe5w/Z7zBrE7LRdHt5n8RxGcbQFZ7ABMwb3+q5evyrHu\nsJTkBg5AgfXMi+y4WvTQx/jteYSHqGixvk7vWURNIlxl8ahvCa569odBRJlR\nIMj5ODvm8j9l1ehAhs7P573hT+DHtGZL9xlNPnu9pDazJ3+guo7xG2N5ihvY\nv21t52u2ZTDQLcFdv9xm3JgIjMrBKojwI4I8AC77ATn8KUPme5Ril9rUR47s\n2lq7VbcqH+7r9RgX/mMYitrhqd97C8b56O9plMehrsduXhNgIb0Qqe1aA3cN\nzp/J1S+Df6nHe4hl+hHGXuNc67Lh460Vb84Vs0Lvx7JS2aWqxKYmxftKwgER\nnFsl\r\n=XlzK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCykgsZl9fIsgq+776EzFiLngVR0VNpcqy+9Mb6hjDZ0wIgXRfjPyC/gfVt8ATw/esvGxT8vq+r5XPyVFePLZWI1W4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.265_1610407681388_0.037429533875554144"},"_hasShrinkwrap":false},"1.0.89":{"name":"@leanup/cli","version":"1.0.89","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.89","@leanup/cli-core-format":"^1.0.89","@leanup/cli-core-lint":"^1.0.89","@leanup/cli-core-test":"^1.0.89","autoprefixer":"10.2.1","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.4","postcss":"8.2.4","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.4","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.20","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.89","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-g2fbEkwajdmNYawpPGR2oycmuxPWQOHg4xecQai0Pi/FrhDnwuzbGVrRiuPZFc7gqqUDnZxR8Q47Hq1nwZXF3A==","shasum":"338d3134ff85c7abc549863166f010272e411056","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.89.tgz","fileCount":63,"unpackedSize":150531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/8LhCRA9TVsSAnZWagAAQkkP/jaLGIxc2BWpKvzk3E8s\nW+oAZX3mCAv/iBKaztEQgIRb08vxQFSmOXvHauP8AQeeiVgqyV0zff/xAxsf\nZI881GVDStmGJJvvVsLr+Yr3D9e7URYNmqnPRUiN8PWMkr1JR11S6tOGGFEU\n3td8la67s689Fssgf5aN3+dmx0WQYPbGn0fwozAAdZQiZ1TTboaRSruhbOYE\nWAnlwamB7qmwbOk/g16VrHlRlL3hX6L9f8mujnpwKj3B4pbMBlm4RJ6613cc\nkHHJd5wr75BtByQeIn56LQYBKjhLoVpXbb3w+5BsDdvDDVwTGk3pP5JDisLX\n2DHOTIKl2XJw+i4nGZFCED9SomAP3sMYwAYnnZTTagAwrnpvbk7QHGYrRuaM\nXMWQJEm48o5SLCmq3HE8Yz/1jz/tWJqoud+FS2w3zid/4OEQ3HBusCTlvrfK\nZSLGIq16251l2DFr6EZkcZHlfzae8TQCN2FNaxwMW7UaBlvo4u59fdDQ0dWr\np0Q2/fmj9tdqITYllmH9fLPzAZVsX7tXu44hJ01JRDKoQOmHGiJiKQQoCASU\n0RGzPiK7gc4EuWgrXSGtv8rI5zhCmi6Z5A52ocjhfG5+cftJsCuSR21mJVSO\nGPAVeQJdjEoaQADk6x1nTRq4Z09Sz0HxcWKF95nZjnYJUWClvqT8SD0rztoU\nOH+v\r\n=xVzt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMPv5rzPG1FHf0fjKHozUPxl+CxP7fHRH7FHFXzWogxwIgDePbQXlcQXN5nYCLOkC8QXjAoIlKl2h09csnXacYyek="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.89_1610597089250_0.39653992324254084"},"_hasShrinkwrap":false},"1.1.0-rc.266":{"name":"@leanup/cli","version":"1.1.0-rc.266","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.20","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.266","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KGyn6gFcyyNdka38XQg2AkikZH/2oztSXQpnzS/VERdewh2jiN51RcpcAp6vPpMEvvVG211zFddNvsCb/JFEVQ==","shasum":"715d0fe66cf198ecfd2c9a3ab0995bf4c0862bc7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.266.tgz","fileCount":64,"unpackedSize":138870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/8LqCRA9TVsSAnZWagAAvwwQAJSPxm2EhtIaEwba/d+3\n9duNJVVhlV2ZHJQ1SuSYsv020YtJRNTP0DclALFOFqFEcofUhyzMgTBhh1Fj\nx4uJTCopjsGSmLlYys3pniMB6ckjS/2fIWTs4q8F9PbJAsjTZShsmm0Kisdn\nJYto4ZnGEMvOb8EDe0WAWvHgpPqWIXcCYNFE7qK8UL+yuzlvK+OErkqVFMTK\nYURM+5nernU+Bht1DsS4gA4dDtnUzmYPlwofQnLdZKYky/bGbZHcnt8fkvWb\nHpzamcLfB+TFmiHimGggxuYrPgyCSvTBowuqnFXlanUtmddte9d34LW8MWla\n336D+Y7WqS20zn7WhdHbU69c9R6TD42t3ObrQ1zM9wcsgyr4Ic++5x696Nq+\ny7P9bu5Irl2RqCdf7KIYvId6Od5rwuSU3ttcWuXpILeyPB9tCJup7977xqz5\n5tkjJHrU/TfaLdYy/nd6fke1fwUKg+IP6mrvEgoDdKUgv16YXY+Zfp5woR69\nPV4O9o048e60mMuErrYghuIJ6vJF4Qj5eC+UEDlpCq9S10ynSVOBmWhIOLYk\nnKYYAkmSgGXPIIoROE06CoNeYYokDFsIqSChpSITUymtm5Bkrn1jwVtmkYOZ\n5FvPMaCZTMYv1+Ixv9XTJ0siFQgJL0hl/WWApYKkUTGWz6/4oVfZte3ayhIo\nx+jT\r\n=xKhm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxvf0L9/3FQvlM7cfo4NmNHxedpQnywvToti45093v1gIhAPRMAqPBFbNIw4WWbyE+kTzi48mDOm8B6Qs0lfo5lvE8"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.266_1610597098557_0.7509606981040773"},"_hasShrinkwrap":false},"1.1.0-rc.267":{"name":"@leanup/cli","version":"1.1.0-rc.267","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"6.2.1","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.21","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.267","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-wsrUwOdonyBe+bR+cLJttwYYmtlWajhOaMzUZnBjWiEGfG0B0LnZaI8ioIEoQ4/DttXQWWqhydUZHwqBJZLGNg==","shasum":"f41b1fbdc040ab817c222ad9506ec6c5f257e968","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.267.tgz","fileCount":64,"unpackedSize":138870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAwweCRA9TVsSAnZWagAACgAP/iuHB2nSfEeJoOf4pR8S\ny8NzsXJkNtyntHQVFOQ5/qX8imZ/MhtvxRvFAdoZmgNk2q4cBVo0r+dZh/Ot\nit91Sa5uqTvpW0pI+Odw9yirsKI2asPoWyI7Bqr8Yz6La/ACeEzBVzfFLCBh\n3t/mpGWjvXZePn2xNhtXdp9RRrhprJEc3h+opVtWjjRnUfziFCfYaEJhereN\ng1YaPAhuLRczotK2X7Moy4WSTrTY8UyQri/mHLGVSTaUUU3jVnUKOjuQLUmO\nPtj0m5VjFZolG/AwFftKqN/t9m2g085RGteCbhPFaQ5+8XpmsqRBRDc7UOyi\nJthzORNTM468rH0wApfrX0iUSTjBquW+rMg49mCi43PDPJZhYxXzfttJGhsq\nA7/Ay6NAGvEknmJ50YBpjs7yB/pohEeawya6IJZR86SDchZ8C5T/oQASQqpK\n9nh7rDCDy5Rd5nRd1N3YMBIPCeJJ2p+a9GgnSwI7qkY4gDgoP9/QrMK8abkE\n6PIh3zqesPe7Gdu4S9z84bmkjNB5Xo/QQB4kLRG+EEIPlcZDVQQotjBxg95I\nW5D6w9+uRbJqkrzEG6KjGgllxMQTNRK82eF1GpxLc20zKgnRR1CMteb0QF80\nmZGxURbDXIVcd08lCpLVPeI1uGbjmStKDw6o9EY/UsJPVbXbotWCQ6rf5hOv\nxgq7\r\n=boT9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIrXN+OORXTAAobqBwUqsL67pYMJIJUujmg2fbv7hmMwIhAKhoatd/J62OyQML5CVlFIDdlfIF85U9HQn9UVHQAOYn"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.267_1610812446322_0.20238687453663862"},"_hasShrinkwrap":false},"1.0.90":{"name":"@leanup/cli","version":"1.0.90","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.90","@leanup/cli-core-format":"^1.0.90","@leanup/cli-core-lint":"^1.0.90","@leanup/cli-core-test":"^1.0.90","autoprefixer":"10.2.1","babel-loader":"8.2.2","chalk":"4.1.0","commander":"6.2.1","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.4","postcss":"8.2.4","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.4","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.3.1","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.21","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.90","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Pq//kS61ORxMmGoS+D0Q1tw8CQd2PJzBiivQ2jYjrk6Gw076GIqzgb2VmhZ2J4tzQI5pTvhr7Tt/ohu5GlDI3w==","shasum":"bb05a46dd516658a99386e6173829f113ed2bfba","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.90.tgz","fileCount":63,"unpackedSize":150531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgA7rJCRA9TVsSAnZWagAA0UwP/08q286I7XI24YFPq+qt\n+emkxjGN1anLhXoVlfkhdKj+YYQE54zdnzpHHrPwq8QgnJEOkqtiNI9pKhJ5\nv8clKeBki21JbyXzdNsYYUvHy7nHlKRBFu3zyWVnsYEnYhyH2EVTtxZkzYGY\nKd0oDd1scxL+NwQbpeW43iEEYOnS6iGM2NjS3uiiZnutXJi6e8RNo3k6glHk\nMPVsvP4/i5G/CUgDtR5nXSvaTrrjiJORcmQGxgz+8Ai5txhb6VHm7PXsQY2+\nueWJrAkBCBZrx6IPm49EHKidFgYq5ojv7gp2F70k4/Yx5ma9xb/8/ZG5Nsyt\nQGW90+/k0fdrUCFMOdrx8YbzsV2efwoKoVfahHlg59nLvtgD0hgnmJd893k6\n9rHLY1I6kD1HHQXf7Gg23d9DdERw07eVb034kThnZTkr51po7swCLXx8P7eJ\nprL/p4qbE8SH9NwZfz/s0Gu6TmawjxitW78htmmKoUad63T3igG5KIavCr3E\n72LUX8cL7vzOhQSJjcAjxdC5VktqaBwqDxxaZiHDy/CB56xUznKeByQM1FZM\nVHhnKKZP3ImRJE9tLX8ISHbFjylJZEp7d9iY98fI4TQYljKSrEI4/xdn5Qnw\nBaw1w46xISTsW88yUs8jNApsndIghgFioZ0Vb+F0TjgQoX7pvt0Hi+F1GVJg\n7K+K\r\n=aFsD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFfhE/HoCPqYEBv4ABIOmwFx3px4mSzrKIZv09dFoXPkAiEAzmbpqo3lCOyZYj6VuiUeAo14poHuVcaq+jBtBU8Iv0Y="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.90_1610857160867_0.58543292951788"},"_hasShrinkwrap":false,"deprecated":"This version 1.0.90 of the package @leanup/cli contains a bug and is marked as deprecated. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.268":{"name":"@leanup/cli","version":"1.1.0-rc.268","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.268","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KBlBknZgFbVMpvqyIagemY+IuWjTcvONkj/oaq+rQzD5MA2NB203T52YFMgtiiBUKzTc+JmWDB35W3FRjMqZ4g==","shasum":"ada05121ce0943c13862840395a926118fa8f0aa","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.268.tgz","fileCount":64,"unpackedSize":138907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCRKaCRA9TVsSAnZWagAAy5YP/jVV5XldSVGHHskU9+tF\nMaWVMAhREOsrwTxJi1MNaoo0mtCMnkngigYSTlpAmGfK27b216zC0qYiIJXY\nqfMIitZFH8Ck6+HFVQi7yfxET++y+sQbyq63XacbN3VSpNUjPQLgNg5VjbWq\nLCy68gKs/en0Yq5UlG6WwdFsxpPpHRR4mYuSyukHgKp5c00I3c2jbTH1wvDM\nlbOAy9CBu82rgJAw3b2+5n0i+cStZs/zGNxvD5GwYH/aujS81HFo5FYeqRtw\n0b5eyTT5v3Dk5by5rLzhM2DTNWd/vvH7skvoL1imbA3mNwTsn+OT9ClkYFXu\n75WKDdWqNWlhmHzRmrV82LQFa/2Ls0BbQqUAsFmg5JbLtuct6u8KBCMj2MwD\nouhY8pWwyyzhAvdWrAU8TgOAWJNvzS3Dww7iOjoLjJh1cD0pxm+ZbZN8iWjL\nPhTeObKR6iZ5fJ4AxNHRd8RpR2pAG+7wVjQ05mS3s5kOUFvSOZo8z5Rl9EH2\n5SHXeXInx8pQFizTKNowk1Kp3rnaVzCbpxlaoaKxT9XDcUft2A5V3+KFNz4C\nwdklqSfUKA7aezWjDn5NTy3C+EFyuKIqzzS1vKt1EQXS/aKDA5Hxce4IKYIf\n1uTLLZ35CiYabVyHfoY9OTDIcf7IxNmnmyhbyf4xNVgt29cemyd2eLsgV64w\ncpC2\r\n=/ny6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNa7SIFMw/jqSt8QsbCOXbKQc9gHqlKjf9AiUYSbeKCAiEA1+7YtjzorBK5MJnlcmKJU8pwAwpXWzSPnBA+6wtHRjU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.268_1611207321376_0.1886674856162296"},"_hasShrinkwrap":false},"1.0.91":{"name":"@leanup/cli","version":"1.0.91","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.90","@leanup/cli-core-format":"^1.0.90","@leanup/cli-core-lint":"^1.0.91","@leanup/cli-core-test":"^1.0.91","autoprefixer":"10.2.3","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.0.0","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.0","less-loader":"7.2.1","mini-css-extract-plugin":"1.3.4","postcss":"8.2.4","postcss-loader":"4.1.0","prettier":"2.2.1","sass":"1.32.5","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.4.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.22","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.91","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-7ac8v6hqqytLFs7HPChYYNRtFfr0dNVZ7H4rgUQdgiq/pXDjRLeXPCHWX+h+yET9gG0xwEsglwQzemR5urwVJA==","shasum":"50ba6f062e10ac06b69cfb6bc65470c8bff369ae","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.91.tgz","fileCount":63,"unpackedSize":150531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCRMpCRA9TVsSAnZWagAAFGUP/04Ju6dsINv25vTnV2O3\nXwN6smXCo4iUgq56z2AHkcVEHyPgCuwqaU76+AmPL9Nxzs0YVAwSCjMKcJnB\nYaErhcxzSKTVZVhwWh6ejLyPrmjf/06Os2cxS56V3B+GU+dZQ4nj/jxbcvxk\ne/2PLZy8SuEcN5vcJkX67LH7NxaI9TFtfV12C9wVdUBVbPyAYwUw1RK5veJT\nCBQGJr5IxzPfTKvWc0NHoY9+PsoPQte/IqsDKqJH2cw/j0rEEgmWsAzo1ETJ\nM8lfENV23yrsch+4cbcYiriwJ9T9E11450/MkxLW/I0ByqFIl4Mrd6wZYF/J\nkhF5Z3X5eDpkEuAmdVB70v86gVNQpNL79gbEAinJCCIJJAUtgGYr7arr+Y9a\nuBt0J9FTmEiUEFJEFzgtBxwq3G4nDxWL7MVuHxZ0nvDFOTjM1rRMpepTU+9S\nv//wyAkRX6lSZws3B1R4E6sFOP5wbRim+v9TQE9Z/u+RhHzjKGJq13KaKRPn\nZ1POZUI5cCNPcNPdB1GODTgFQ7qh4YTvJppRvjHyrom2U0MVkqm1DV9TKVGp\nL5qudhkQX+EVSqpKDZqN9EAaNTU89Po90+jI2iDIBZOsk7ObDmk0pnPrUwTe\ndKqYxH0ZD6nMUmLhyN4QgkRcJa23xkSf0q/ub4EDCSYGsR8njXhKY3fl6gR8\nYgw9\r\n=7G6t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCq6msw18VHuHRJHncj1mlPy8kdtwih4qdZ6JZxjpDscgIhANgRtENjghiaFnPxjGK1j2+Ubh2AKUR85lVCwCFi7BmX"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.91_1611207465003_0.029429785063771252"},"_hasShrinkwrap":false},"1.1.0-rc.269":{"name":"@leanup/cli","version":"1.1.0-rc.269","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.269","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kKFQGtx9h8Mvsg/OSULpEdQopOu67k1RnQlWwGZbfSpt6DX+kENavYkM97ZwAzFuStydKTNX5X6G5w1OE7ZADw==","shasum":"1a3b1b97de2a86ff5b106450d8291f29389b646a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.269.tgz","fileCount":64,"unpackedSize":138907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDkJcCRA9TVsSAnZWagAA6hgQAIqrBkoTKfB41PZ97eJO\nECNxtCQMk2jc5OyqfGFMWuPeZZ7oYL+ZV8XTmd5FazAiGt/2uo1Kd0plEuLo\n97lJK7QiIuiKYz0+pDzo6R6pnHzKrwqIHp+RxiNZtmm7WtpBOKKcRVDsi930\nKIVYYIUPdY+b1PQzBqEZDnPUOt30mmSs0MCP7Gy6K5HtdB0jM6UNCpv2xlu1\nDerASJjiikqveTwJfX7SpsweqgrJFwTr/1B+GnDvCL8ktFY93046nyevQQ1j\neSfTOhuhGqdVqhVl2BeEyhxdMkdO+zYKJvMyKXxjEZ/McJFQpiP+Oq9zsJVe\npX7l1U2TNiCLld8AXo3XxSDf8IkJRBVTCbWHhqiPVIV/SHHi+SOtks1EhhUM\nTLBXhJ7MghFKgwxtMOeKWKu1AuFE8CKoaHdIBqcda0H1aOnRI/KrsemKYeRN\n/9WmmivC0rf91oLT6WSanA1A1JvSKIetnbe2tVFIkurbkySooKnlNb6e+j2A\nFJ17cvGmcK8SbGAhW3j+T56c8IMrd/UDn7UNP/Qcfm/uhtdc28AuTfMEUON9\n3+QN+rydXbePgHHE7FZTd/30bhdd3ntoT9RL/piV4m3brN4fKg+KR7W+sIqm\nW48dsaOtIjxGTEmRQ+cW12KpgZ9xj/tcQmerq0/q+Oy55DUgfGOWwPIoRKg/\niC5f\r\n=25Qo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqIX6ba6G4LQ8iQU9SA1vBXxzFRDHL295Dk2dTtalUEwIhALvtnV3rWoMUABAM2DK8AhUzxG3urFqb7QhMrgR8AVVA"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.269_1611547228363_0.26011089503281126"},"_hasShrinkwrap":false},"1.0.92":{"name":"@leanup/cli","version":"1.0.92","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.92","@leanup/cli-core-format":"^1.0.92","@leanup/cli-core-lint":"^1.0.92","@leanup/cli-core-test":"^1.0.92","autoprefixer":"10.2.3","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.0.0","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.0","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.4","postcss":"8.2.4","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.5","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.4.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.22","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.92","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-uohfshZ5VA1b71XHQx9PDZILBF8dzu68PuAob3Mi+6xVzE3uJVC50hopHomLKf9gkx1UWknfGrBnlSZ5oKpM8A==","shasum":"56826e77c6384a252fee8d69191177d3394ecc29","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.92.tgz","fileCount":63,"unpackedSize":150531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDlAyCRA9TVsSAnZWagAA7+oQAJn9sJxYIbL7EE6xjP/T\n/X7sLR6u7xAWxRoRorRCW5dJm+6pqJZowsWbkIuDwkzo/V+xekNI7jHKy3PT\ntnUXhjAZjYmZHCUVNRjWyJTTVubCXcOrhQiSJ1GAGhMnAhuj7UognwauXVpw\nNINluBIeMnbLjIgdwCio8ueUHYpAYAMWt6WFza46CLQ+YfrIMj27gnB/LXd6\nLFlO/l43wIxw5gAMWJXrTd20g1jI6JWXddWlKLvMYcYGzku+zgYru9U8+pDX\nTLwAnUahkJzEdP80uYm+H/igL3eMBa1dLjMwW+IogGSffdLeZEHcMiQG259R\n/PAU93LzdkZ63HjGt07uJ1MIJqCrRdcBrTQBFeS1Uzb9wGYx5QST8qshUTIb\nBTJWL7ndMFAH/HU/oWzHI+GsqZk2uBwNrNsof30S34wC0NBoAephpCkC+l3i\nNREs4iJGiLxdyDs3BdgBOrtd9dutkMjQZo5UHwYuKSJYBOGQbgUdEaqVDex6\nyfunVrXxDazOUnu3zGSx1Bi9vl8im3H+jvaCGBPzE6XiRvWsfNlNjgmVK8AM\nGoBLmwzM4sSl/41+lmniToC1G3hhHk2ajXgVwP33+4t3M5Zb+BqPTRJU02Bb\nkwxTnnVIV5UBGO/dcNZqnlNNfFVgvYbNwB9JpMxveqido6zMZD04ysLjDZNT\nV+b6\r\n=1VyA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEgbFkVHcjZ0DewUMiUmOQih7scsyEdbXRXtVUCM8kj2AiA3Biv+BcSPEfQqR4zzLWxZimDU7NL5gzkVs3EfVdZEFA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.92_1611550770311_0.6669437001245302"},"_hasShrinkwrap":false},"1.1.0-rc.270":{"name":"@leanup/cli","version":"1.1.0-rc.270","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.270","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kPAGDVgFL8MQlHUKxPUBq0HfVeQRmYhpfeQL3ZmRmmmnPfbBf2QXsJ7g4QvHc1R7cZtAs0Ee/DpGUeykqUSUGQ==","shasum":"58eebf599c1adbdca6aeeb7cdcc0a973ca6cb8a6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.270.tgz","fileCount":64,"unpackedSize":138907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEIkHCRA9TVsSAnZWagAAZZYP/j6wML5PFPfb2lmFE1YU\n+y94b8a4cJpaWQ1ohBNXwN7JfLN3SaQmVv2Ps6qk2uHTUA2CKBxFpMvSfZQt\nVcKoTVzhPc46b2ZNB1ETCJQQVzUN0r0OIubHYNWa5V4tdctn5nybGjzhbr0k\nZCRFerIswCWH3DOC76JxhzWzeR+ONA6VUTkoQSjtjGiVrphhMFGkfDK+08DF\n6ZuACkNVU09QWAmX5Efv0NLzuowScMuWVwmkFYMvAywgaWlRCi1ECKJ+CHkp\nn8YUf0nQSpTJnFKS+dC01Oi61K8/rQAApoKkXamSIU5JZIUon89n0Mt7yZna\nvx3TOTH61phHC7rSuT5C7RSV/P/p4Zae5eoho8cAx+KHANToI5UavxZMqweB\nEGCYHye+M8kanjKRZDDK5I14VoPWxJjajewb5H3YmRN3ohV62bdOEaIwVR3/\noubuoBzWMfrla7x+1zOehZmcOO71Mt8DUn4jtOA7EnLwoiX5thhXgEfQoDB3\nwT/neWdHV1+/E1ZjgZQvOkvpADKGX3sXzIIKIZSqwzwWda77wCaP87NWNYxV\nlC6M6kiP140fOt03FYeR6LkwlrMPfrbQRoB9NNCY1+ksOcM0pJ6aoqVrOnLM\n3GOCAXUlLg1ikt6Hi2EHldafaQm3781HA9/HQM0sT/UtHrW3gwLsvq2QvIl7\n2bdu\r\n=Vuby\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDO/nBERTrtyYM0P121f+fERFFETVZ+kI7qT3bPLpHZPwIgfvEhpmfVXZIn6HID6rF30+KgQSp2qT0mYvgWiI4JI/8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.270_1611696391465_0.031248845715603046"},"_hasShrinkwrap":false},"1.1.0-rc.271":{"name":"@leanup/cli","version":"1.1.0-rc.271","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.271","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-EDr58Bzmn2JhSC/EdXKIu17zPesjGB/tghC8535wR7nDPlnZ5vKbqhDrKzJLrtOksFhuSInJ2Bgp0cC7tytkJw==","shasum":"54a61490c7e38c6b97a08a8112212a588595fa87","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.271.tgz","fileCount":64,"unpackedSize":139511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFH9ZCRA9TVsSAnZWagAAieYP/0lJivmhG8Rg3y+La3d7\nX5TXMpV9k3ZdPdiEgziX45qTcFLYI206C1uIJ5RwJyPWvNCXfPeZCKwYjQPU\nZoIpqgF7AgsaCbuTXZYD+RsZgrEJyHpgNKZyqAMx13kJg8OXvnGxbBDvryky\nwzV1JV3yWHvK88NMXoSf4+qm7dBKD9t8Nn/SGVsAuYLKfDzlnzrrQUgAJr6R\n7rtuSSVeHFPJuSGuzHYYNKuMuN/J9d8kWrEGTYfAMj6d75Rmx+gWJZM7APSD\nQvvFeZiJqkhoJhWyhr2aSHtHVjLCRILyjclppRVE8+K/VYAXMGBD10xqV4Sc\n2/wBFkhsbxhXccOZLzB/OFpxb+OM053XbW9XllvI4j90ITZ/EpDXuQh0ubyc\n45QcMoPhEC3UI2OovKSgNV85AQpLZK9wVFkQJ5h3wJawQ312e3qwP3a4Fq/s\n1btrx0ApUb2E5WzCff2ACD1M/zpcQKm+/KgurOFa6oUz6DPSoGqcjJ9niTzW\nw0D9OZ1+9w/VTTrTTi50t0UCVwwGGoWyI90fohceUfvhN+e7nhq3qs2WI5Cs\n0GQMsLW4C51ZzRhNqvfvDmJJQQYeTMw9VK9xMEOUPY6wJDYROOe19/7xJTEZ\ndVNgdAwO60eDiUZNmZThLqIcT30PxfKAcoCciPd6zRT8rUqQNJC71uYIogYe\nER0a\r\n=xWjf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICqNniX0NFlRGVq7p3DAOeV5AZK/8H3TdrbrwpveL+mWAiBHN7dgl7bcHDrTUIF6g5uHZOY/UQTEgpAMhGRhNbmRHg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.271_1611956057427_0.7576587228337959"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.271 of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.272":{"name":"@leanup/cli","version":"1.1.0-rc.272","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.272","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ZOUgBxTHBjVQpFKIarlUzPSUgLz5K9+z5En5/XRTfphZPTsMy/rKYI/sH7NhPOPdIc2O5k6RHFPEC+/y+ml1TA==","shasum":"f31167c15aa79508b0a774688e01e5a0b55145a1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.272.tgz","fileCount":67,"unpackedSize":140101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFJ5UCRA9TVsSAnZWagAAkxUP/RrqehPD2QpfjfWRqjeU\niv8wgIiNSNpZjoeplnhmdUGG6GYRtsne8Ip2isrqg4bDedqmPXQ7w/tOReQq\nWTMj28P26hldPF6Aq/KsLWb+xxSjM3yQuP9bjicFGe2XOYNfAEeEGztJt9ei\nBhKs5ZYk/DxVZfgNvAYak+D7Pt69b930IID7uJG6AeXyr5+HeqQwKQUBWOZH\n2hBKYlLzc5BylkOm85LD6OjbEgtNsHz448+tFqtJTkGRGpQCigUj4vgM7k5S\nJlKxYZrRVoMLeGr6mP7jrQDzy6zC3DD24vQ3MAzbve+uIWHgDtHJ1VSnBivk\nQjc2Fn7d3M04VnPxP8d3m9uzEOIdwK5VQLZGJ14xq2gtVXUiu/WLGrXIrrdS\nkIaTZPm4/o6oPVSaH47iM1Y4iDIKGLNMgC5cDRR08/BbvmhL9WSPLem88iXZ\nKj4KZDRmfCIIrm6fhaUSswdvs7WPTnCM1wzoVlA9cGM+c6HEH5fU690El8/8\nAM9sYG1DuaGwz0D4ZnzXEUU8USuohUcoLUhU3FpLczvMArJQTVjrVuYffTwJ\nogMV3SgkQqUlRximHuzy9qWhnZxnWfQcQgeHZi/lfohLoK6LjUxejN/lHALT\nsKu+l2555MHAE6CDrKSXoxI5RxDFbzzlSvDscjP4wz6oftx2C6cVQfPLePSv\n39kZ\r\n=zQna\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfeiGrajOCXgyXJ8Tv1Ppi/kh5RrQDqlcEP5I/W69H4AIgal17RWkcHTVP7+X5qA78ZdkB/+RS/ps/EcPhQ0mrg6o="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.272_1611963987878_0.761960950007661"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.272 of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.273":{"name":"@leanup/cli","version":"1.1.0-rc.273","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.273","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-yIYLnzbPuzdgTTSveALnp/Ojysh3IbYzUqyCgU9Ornwm7e0knFtOaTrTSD7Vyk9nlhqbwZTEU1D9kIPUIpZMcA==","shasum":"fb655e21659e49a68ffa0dddb7125908234e129e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.273.tgz","fileCount":67,"unpackedSize":140467,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFKx1CRA9TVsSAnZWagAAzb4QAJf+hXeKjgKB1+on6C/J\nUMvq75XEdEevG3sQw5SZQFRznAHgbkcH+80JiEozCZ8eqXNIwll6Bpu6JwbR\nbl85mpkb1P5/PBlP9QS4b3q5jfu+7mS5YQsVWrnMTuH0YsozZ+s6ufULzCsE\nfwyq4avmVj7oM8+xxITDDYAo9Fj6KixUS/MAIAZ9oxRifzVgEzYsmvF3n6nE\nCbq+7wzLznKkbbLGMDwdOx+5i/RTtnt89GBDkEfWl6pd8N5B+u5nRmP+l+o8\nFpT6VEZ4yBF24ksIuVdyLvlZrxrqu27nitGgWWziOHOz6S4sO09TA6VIXtvP\nhsqRmllqnM+oBgMoJfw9iqKT9r8hXD+h8ruDcRY6l7CZPuLI+5P7bTRiJjne\ndXt3aJBApByMZAkduBIzeSswWNDmPGSX33GpnqrdxkS4HtZX849SVR7VzARF\nR/j7HQnmzYNBxIh8ThrzTYWVhBZORX4500xvpMK76JBQ2hkFY2GJR8co8bl8\nt0Frb6gj2RJWip2jno3Vdekvf4qcV6FROCRDm7eK0SVMvdGHnQ+UXC2Fq93f\nbLSrrikZOezJQb9oWBUw+BQJa3bmqKzZTdjh3FvCkSZqPX3+QsKb0gT+UZtN\ny/tsyXFK6QSj0QnYqoBK5s2NlAgN0dYvewE3JVpMK+gSkH0gaJ2wUFi5BA2I\n+Gj4\r\n=8XgE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFP6LKnxVIJ6V5ig9xjoucl1eQ4s3BbcDyubgIAx0iXvAiAHpDT8x7A6hyE3C6iMY3FzM6fSVdZvQ/ErOXQaTPWyOw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.273_1611967605341_0.019142839757779084"},"_hasShrinkwrap":false},"1.1.0-rc.274":{"name":"@leanup/cli","version":"1.1.0-rc.274","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.274","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-XW+MWeh85mSCySZnihQTvMdOSa+bNQijWpHkuwOGHJT+65Eda+LXFnZol5xjviHXbebvtcswtKCweuOFo3NKqQ==","shasum":"f7ccc3ebc059f60867e4c43d809131c4dffa812e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.274.tgz","fileCount":67,"unpackedSize":140486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFaJcCRA9TVsSAnZWagAAW9QP/0DgvT3uIapV73UWfr+M\nZ0bbM+OYkaz4uZDss087bY5WCVU0kawjJ6sH7kGgM+Iuv9Q/Z8kww2Ko3maU\noOLfBV0eVIAZdvQUO6oYjbgMGos3ntaBMjMFcrXHqHB0wMV1cKtJjhdmNooY\nIys5BIXgJxlMEJB2xIrFLHic1XjpKF8dwxFoj5QpcVretmOiBeyBwlECsFyg\noeNVb/e5BFT25h8Lp2ppQV4cs3BLxPWQ2Na9ftmIqxxeG4TSUUJvDOF+Sz3D\nSdAaO318oDKPmj6Prx5wFnGoY0y0lHDTQXCp2gt+W81UA6BefxerVxuAVOet\n/WbOCcCnoTF09n4DVLEpIsfEJ4f0ztwORSmmLu5TQxAFmx/aL82FBT+5F7xi\nfUcUuANPGiFzWRvXITMEWMafro0oLJFuJaU0vAGa4N//Tsa2tm7mC7VkhysW\nkWIYMUPMTAeBO7rtQw8YxTW9AtE3uL/lqQfwgScnChtsFBGk8y7p7uHX6WxI\nlib570iWv+6cB/pMlJ03kxQmrsHT0Se3XFvFHppaWYtUXFtqNZtnr9hOVP/b\nO6EmQP4RxeT3tM0ASv4NPQyoAZNBfsEQYRT2BRuoDKPaRP1bUecspRZDwZnU\n4JZl7bm+CogBy5Udwa5RKsVkoOZijeosiR8DRdX/A+aqIEOynNJoLN8ciVst\nZcqC\r\n=UOGj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLlM1JD++DDZmbF27zxxgdjDg1yVeLoXFZ++lf0ZwjiAiAzVglLJYIDQih/4lVEWJDEnOB9foy9k6MCukdrG8lpSg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.274_1612030556167_0.20563476025073602"},"_hasShrinkwrap":false},"1.1.0-rc.275":{"name":"@leanup/cli","version":"1.1.0-rc.275","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.275","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-4urrHg5Vo43jwGlEM/e1XpUS03d5sV7J3ZAsX553sJZMhiPSq8qP/cIFDwUfJBVgOCVMcIZvdITYwZllHRoSaw==","shasum":"dc7b3857a186e45f8a0457c9d3b7deec7146a263","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.275.tgz","fileCount":66,"unpackedSize":140449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFj08CRA9TVsSAnZWagAAd8kQAJmNS1rCmcfIkhai4cbJ\nyd2/147f9I53LTt9sqMDnGIu2kart7Xx4jwpOU5CiA1TUYW0pXI8jDfuIvc+\nP4ebdkgGUBMXnmHihj8yAr5yGJ98u8xtq1JUUyJbOWzwdBOMVgZHuAhRt19J\ny9sOcw757p6DYEVt72YALxmZAkZfBbMs4RrbGINIvo6veQdlDEntG8miA41o\nRqf2MnNSHfcJSvii45Ck58g1c+1aZsvhqKmoOBhGkp3XF/hRGcvmPwGF5Epx\noXR6zkbiMR8iG9NQdjAOKAss41Iuty79xeMmvzBOd9AIqqTdKMpolT+OfK7h\nGpYNOkBh26USNHVFiOjdaUtkkpeNoP2ak7hFuXg2TR9+yKjGqmGQuU0U/j0Y\nNK1p/F/LX85dyD37jySjiOqiliNYHuxNMUlvZ6Ds3l/Iw/G5ojwZgnip8PCL\nxuzJ8J4iLz3rW1eMX6F/lSUmL2UNO/Vub0Nn66qTwd12XKWssyXFEPOh2jjw\nz/KpDRujLmPVvEFktaPp35PX700Jjnx6aVu2Sn2BpP+ut+DvW4fF3ncw8Nn0\nrHHHpvbUXhlIC3VfSlpzlQ6LtP6XSKi0byKHlx2OsNC2AeubdRJTd6i7p5vr\nyt7qcFxxOCqrIo9EOJI9yUuHWrmMW1AYflfMi6C30SZ8vvg+0fIvsnfxQryX\nGcPZ\r\n=Zn5W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCutRWfx1zTLeopXXx/XEL6D4RnsyTP608qbQt82vVwggIgLMCR5YCNjObIhWu9Fca4nIcolLXbaq0x24fcZUyAQAU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.275_1612070204246_0.40686569955312124"},"_hasShrinkwrap":false},"1.1.0-rc.277":{"name":"@leanup/cli","version":"1.1.0-rc.277","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.277","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-YebI3uatUdNmu7YMyzB0oI2l3xEuyM0uNt0ZZ/Mcli+EE1/qX3vTOzXQCrjxTSfDamc8aynR+sj76/V9tzj28A==","shasum":"59b3b9d3fb11c51ccd1ccc139635ba330d4f4b68","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.277.tgz","fileCount":66,"unpackedSize":139709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF4OuCRA9TVsSAnZWagAAqn8P/RaGb4jCIDZBtCnSJRyP\nCViLGf9oKrOjoyLGsqg5axtXytq8TGt2D9jClAr5K28huUjqiieXvoQ/43ji\nsxmFX3vAGobK59PiZj39fdK7zlJS1BHiF10lEN52e20HD31I8L5xg6fTDUmV\nospaM3nfFe6cO7p0PwYnwDRfD+CTUD8Qfj06T1CmorEX+HQx9srvKOHsNdit\nA4gFvw6U75gUxNFoSOKggchnDd70+Di+RzNBgzI0CihkCZoO/b33Y0isPF+z\nIXhtAHITEDClAKoRG3z1lR+eDPIImIHPSFkN2dSWMhipZqRpXPK59KCgP7hl\n7kkBnXVy7OdmLz3va9+5/rDFWufueO5Soz7v5jvRSfmtto3wHhl6XZxPd/7N\ncsng883sQkVJJ6FvdFjnBIMeQmK8nbInyAdhZG3XUEyMgzw+b6/9/4f65yqB\nLpGWR0seY1l0eJExjz5UWAml2OULViLQDWvnJBSNw8fQXKtO6SrUkbejZx3c\nn/uBVUNjVLR5+FsLtYLOEDon9gu/Weakn56qoMyKWlagp09GdC43ApoC4y8Z\npBSBe9nqjhIx6iE9bWcBulm2icRAv+kGwej3jDOSOtMafZwVO+CvT2LDox0I\nM7RT3H6ZpPBvDJnSQoJPjZ30gogR144K0PUjVTw7iikMbSx5rLA8plEYNig8\nEJnE\r\n=1kds\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGzeZldWGOVPnTGeW6OU0kEUoPIZMf2DfHR9v+Tz+1KXAiBI2fOQKeheIK9lbY/CCOQ1zcf7KVagvnHcmEiPxY78sg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.277_1612153773976_0.6759705763526982"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.277 of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.278":{"name":"@leanup/cli","version":"1.1.0-rc.278","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.278","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-BZI++7yj0toSRt+x8lliESuP8ITjp9C0squC7pdIwY9PuhBsgyv2tN7SF0gHqOabjHSFrxGANlTaY/TeLK3J3g==","shasum":"cd888edf4d64f12d4810bbab27a9d6180078b7bf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.278.tgz","fileCount":67,"unpackedSize":139928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF4uZCRA9TVsSAnZWagAAOUAP/AspLXiyB/RkjOogvzGc\nH5ltOnCr7pBM0g7LqRn03MYGji+iXlcLMpErhT485PTQq5Tl4s4nqAQTSGld\nMALtFG/75I9D0Ux+XK9X33ATvxmNmzT2ivrPig8YRkCBgVxaOhfT4BU4dtuh\nlMYGC5s/0w7GNoJPr9w5Wvv1ZOw3zTigCqTJRdhnDdCOWbC0caH94pNgknVb\nQpHAxOut4c1bwTkTTx2cPmXyoyAFq1Q7yKJPsymWlq/p76I6C5sYCFVLimSg\ngME3oHPsvziulBlFgY8nJQCMuMxq7OL9N8ytZ52Q7ScX96yBch5JhIrp5K1F\nrtmmGz1fkyYM5zQzhpN5BDsCYdAl5qNelC6yGEBf6TfBMLg7/4+EZvuV0326\n0h1swkpNC9gD1wwdsiPqtehN5O6VxRI0wKxntMxaC9l7YstgSjUGkcF9Lp22\n35WSes7QVT+W6gCA527FvgwZX4onJVQZchXmPnPOdAqBqmKsU5Wbc1XnFKdV\nOtX7l6gKxmj5dZuoWvuvHaQfUHttIaMTL7JRMbaes31RTvuLgNyQ308gqHuq\nGZ6JSNZu0u5bDrb/5eBzpqI0wbLLPjsfi212DbFbu+PCKFZ0/bTvpkY6iHXN\nXjxNBI/fjqN5LwN0hfQlCZ9srYw96vDqt5hC67SjfAqIv2HP1OClbPYEWwbY\nxZEj\r\n=s+Db\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID+9eGXNrpmvcf/azqFQIgLF7UvwdEBs8k8iZAiyEAmfAiBu1zwkfHIP5Qs8GonhQRnzv68dyja5/X+T59Ya5Y5b0Q=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.278_1612155800574_0.3409945300932191"},"_hasShrinkwrap":false,"deprecated":"The version 1.1.0-rc.278 of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.1.0-rc.279":{"name":"@leanup/cli","version":"1.1.0-rc.279","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.279","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-7vHoojvePR2Bss2mdSC6j68GbHEfa0Fe9CxmmS2aIv+S1l5qSzgwkLMjrB2oFMkOZEq7d6hNl11uemyRjOhGVg==","shasum":"80f55f02b2600f8f2734eee0c482d623be99c395","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.279.tgz","fileCount":67,"unpackedSize":139926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF56PCRA9TVsSAnZWagAAwS0P/2nVfon9hQmK6xEA76EN\n5tI5upiZoq7iupL2Uz1jm/N/6h7lWNaVw1D5r8HulEPAOzsTn42dCtugzecI\nsnnI6mZ3iRTBCBD/bOwAZ9ZqOIAXEfNbIMMoju02IbOgFEuEkacUv1oNFmDG\n7tRaLbe8AmUyn4aSNhlbGv2gyMSBZ6APuunKEzMTQ7YqN0jOg40paxn5Ab4y\n1Qab12y6QqErxb7lN68M+3XhS2W7wAXqyHSQpDBCu6R/CMFuMXrhoxyrvTcB\n+6YBFsk/YlN75ffAH2+As8M/1aoTnn1umufNXonAj4IJnbFIativMHqDLEVy\n7fPfGPiSbCCtax6qTZABkOMiFPQlbJaygHO4lbsLWDCS8ZrG0BK3JHjJmJjJ\nXRUUsGiPJkQpA7EqC/vlp5tAJqXD2NZ5gW12SGtMMoly7bmVanDdd4b5kSDY\nweSFUfzMbnBwmPsMH5fVT+OSYe6LHbg00oabCAB07Mc9/8SdY2p33mC0b2ZZ\nl9A0y0Y9DH0PBnCswpb25FaHkkqBwHxCuT2O1UBbEev9EwsJVzQGLaAF5J6/\nK6iLRPNVMV6REaWD1GilOdiJd0wnS5caxFHZoxoVaHCulACc13VGGe3s11jY\nmkSl8/hJM7/7b2f5MmrkxeNAMMKyRTRcuNM58JzMtx8se062epdklKRZu1aK\nFpzX\r\n=TKEu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRknhtU5BIRjqpMTiRLT+m0WNUmQqOt2CkC64+i/ksHQIhAMSxGSLgUPOKfNEfnFdvWN/Jdn4tb66HSuo4YErRF6qg"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.279_1612160655422_0.33351764978521703"},"_hasShrinkwrap":false},"1.1.0-rc.280":{"name":"@leanup/cli","version":"1.1.0-rc.280","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.280","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-WTeMQIfpWVdrw0XhLf9T154MgTXHn/8WTZwY3u+ihZzWEComdejngGScJE6lmr66kNcuYgrGCqVj5cEdYhv1XQ==","shasum":"ca779fd18ce2659326c7431cf35b75ac12d003e5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.280.tgz","fileCount":67,"unpackedSize":139926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF/0hCRA9TVsSAnZWagAAVIAP/2/znJ8W5c9bNgQO6n9s\nCOnWMb+xYNYlyqQeJJQsQv4ezqWVOHH0uFTOq+SBV1fAV+cx30ga+ePFTE2m\nuqq8bsKDYrUMAI1rM5RRKRXUeuYEugTzjxgdgXmVRw/WUmdrw5ReicJN67SE\n0M3/eQi2K6pmPRC+1/xrdfR2VQIq9zsxwZrKS6H8it1EMAubdPeiRInGpXEC\nO4DKFud9bT3AxB5an7GzKXid67WPdrJgLc6PI50AJWxAeUrLD/QaVObxbZMo\n9TvWXBKB44CukNZT8y4+gbq7FQb6N2pOaJXCN8jFySjUhBDJ7HcN/3LQB0fZ\ntmqtkz8tB6AGAaEEidevDPgVunRuFweJHz2SuqrI/rMwkfl6hQP7xLQ8XGct\nhlmUYVI7jgED5jjdA/Rp5nb0IRPNXEd2QZj+QjEnMKEHjV/IQKBwSdqWMRFT\n7ftp5O7MmXObKX8G8Rz/V2F6GcV7a7v1pAeDg7DzpeRFd0qoCBdWlqtXmp+P\n/7BoBDY9Bl0j2EBVcW5X//MqKgBv9PLC4jKgtYiw7n5TYEWRAL3AwWo/+9vp\nA72J17rv4tVfa358MQ/S2+GYfaBdEA21Q6pg6DqMJJsuP2klshwdTv1i8eQh\nlahxOTiuPpy/A8AZBNgDxC9DhxCS8QQ7zgzlKF+wO8v6N789g+KnXQ/wefeG\nxaPG\r\n=DDg0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID8voKrPVVB0cFXkAuN/LcIRXTT4q5Q4lFyOgxSi5mIcAiAGJZUH3gCgNtrE3IujrfgQVTaszPRxXe+dQ5135rjbag=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.280_1612184864612_0.6860086212300773"},"_hasShrinkwrap":false},"1.1.0-rc.282":{"name":"@leanup/cli","version":"1.1.0-rc.282","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.282","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-16DrzgJ5C5Quqn2tlA5Q3eGeKQ+BsCBdt9UrRt8mXs0DqIkc+Reyx3ofTLmUV3FVNr35J+8Zly/utae8xAzBOw==","shasum":"f5e67f8e4fd27ded56fbdd33edfac918e5a062bf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.282.tgz","fileCount":67,"unpackedSize":139684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGM3LCRA9TVsSAnZWagAA/L0P/Rt3yVOEgJTOHq26E4mI\nbyyXd8TvVFjUojPBUCtxlwup62sY3tLIPSrDCpg1wIN2IKLtz5mPoY5y20LY\nTllvBm/KCdccb5SP83lJbTxt2388+a7dfPEV2QcupyFVETFwvxylX4jKTVKl\nOpYqJeiiurO9YI3vCAgwV08D43jwuK+r/viYFn/qzTMhIWLNzC3kou6ZLSsC\nL/8dJxGXWVTMyR0KeubxzJzAN8ndYMgUxlOg10aSjSUdMnMo3ArzI31eFzyv\n5xjm0wOqgUf6iH8Sm6ZgshEuSlQ4jfGP3YhCEleQQNrV0uVnrc0QBvDRQeeA\nGZfTP7if6bgs2ULBFEIUzW6I/OPBV998IZ1ez1O4Z3CLsJhTZaReiejCvUA/\nN9X5A4uVU//rPw+CllO4veCUvlYMbyung9frjQER8clNDg7DBkjPBPU5+Hfn\nwSLbZRhwiUHQi/hJQApnYBfCNbwkjTSm5b7I4bsVeLkHroHmPRgjuxTt49gV\nhodI9fvRFPg0fiWIcEXwiQbNVZxlH3tTd7NegvneVIalBpg2f2zoNfQMHCzh\nMsck1/qKce6+kol0E7wJrhm27RsdL83COM2D892Bu0sY0dHAV/4JXtoDO3Q3\nJP4RRyvJu95BYqC5YkvvNzcyfw5x7K6joM2pew5lamSNSfIEhWPjAjiO6FvV\n3p23\r\n=GO/z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIfZZlFXeq8AvJ4HMPAAEn8FladsU0/mdeRvEQrdRcgAiEAym4M+0c2jsAs2FJMO7Jag8fatHj3WUM8S3TsIWndP6E="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.282_1612238283188_0.8186724901917268"},"_hasShrinkwrap":false},"1.0.93":{"name":"@leanup/cli","version":"1.0.93","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.10","@babel/plugin-proposal-class-properties":"7.12.1","@babel/plugin-proposal-decorators":"7.12.12","@babel/plugin-proposal-optional-chaining":"7.12.7","@babel/preset-env":"7.12.11","@babel/preset-typescript":"7.12.7","@leanup/cli-core-e2e":"^1.0.92","@leanup/cli-core-format":"^1.0.92","@leanup/cli-core-lint":"^1.0.93","@leanup/cli-core-test":"^1.0.92","autoprefixer":"10.2.3","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.0.0","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.0","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.4","postcss":"8.2.4","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.5","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.4.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.22","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.93","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-8NR0CPbOSRdaw4k09kZKi+cHWh+rEzI86fE2i9pSiJw+fbSF6szvefR7osXdeHqAZYHP1pnxjSHFm1EQ6uz7rQ==","shasum":"bc818536dd2e927dc098d2656c1ee52db6372090","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.93.tgz","fileCount":63,"unpackedSize":150531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGjXMCRA9TVsSAnZWagAAzWoP/A9csTiF+NVa6aJDMObL\nkDZoIepIL8gefcWn2Ft3vXF8hWcV70E40+6Vex5MafMeeuiMclwVN1qsKmjW\nhTxfgS0/eGeW/g6XzJgrso5MLaflIdsRIYkgc5vtViKF7PyWuLjVVmA0dp5F\nPxnb7KFLV8ioHgckEu0WLNAxwDoco2AJTZKUiLKv3Le3HWJr1a1sbC5gV21L\ndYfaSXCARwfzToAm9c8/IQMi3RFt+fm2k1UwE6dM1mKd8pNXRT1h+UySNdEw\nOGvphOeDRhul6GZnInlto144VxS50+c8BGIQXSdvZoI0Y9BZsqouPaOrWb7o\n13hBWRqH8BcHLdpLWdrMaaDFPXjqow76UCiv6McG377xaF+oqGaqj/t4Fgrj\nLrntHBru5Cdz7mlktE2rQe3i0zmxlAA6SqQAWH6WbEO9tuZ18UfS1zQwoqCR\nHZRwC6+M+1yr/HTow//vSJ28/g0PuzTFBqZ1bt5QEbq3pKm0SU0Z2OzKglPJ\nDL3kygbTu98jiiGJplIt3as6d7PDWmf8kygYmAKoVy3XHJxEAI2tAJC4S8CF\nxuJh6BErwYnME/I1iDaPk/5Zb4+SHmBYZTIf72aeiNVyp/B6cgHqXj+whDgC\nZXU/LbjWWzXL5/m45omZA84MdDgwajpNBo2c75B0nKOj9V4jsMDkRw5V2QYh\nA4Ik\r\n=Silx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDE1316BaoqwvBQXnLArH+gFwKmD2rnzhTHBIAlT0A3TQIgfWs45Y2fDkoyFnajt3b6Ps0Oe3I1Gqu4np6gSPHQsng="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.93_1612330444452_0.08275599390454924"},"_hasShrinkwrap":false},"1.1.0-rc.283":{"name":"@leanup/cli","version":"1.1.0-rc.283","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.22","@types/prettier":"2.1.6","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.283","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-gNIQD5yUv5pMatpninnW6E3MKZfkxfLOnpBhoILMlMSwqus0pcqhEhS9GrsFQy5tcO7xH/LXjRzMf1LPtcILeQ==","shasum":"90c02aa5aaa0c99a1e2722e90d587472f6be9bb5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.283.tgz","fileCount":67,"unpackedSize":139684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGkhWCRA9TVsSAnZWagAALsAQAJzyghRkOTcW/86vag3g\nsu6xVcSsJAnAs1I8ifGAVtI4K/i+yfQ3t8NltDsBSm3t5bFZHIeECIXsb/qK\n2GK1FLS5o4LnphtmkUiam906fJX87pkKDEeiR0wnpK4CVRRBhi9HWaOD3VM0\nNfSAFjRmdFEYJqaSfVJcvNb3IWJkkIThhjbxctKeZTH/A8x23yG16LqL3va3\nToRfLXNL2N9L9YWRyuMX1flw+hHp3ha5poQrZSAFu7IviK54PoQfGLZeKX9R\nqpsSEgFZlBj6xrsWjNLvAhcKvIEUtahwS+UQ50NuwxhnDIEaG1Cidx3j2JSZ\nfY9aEs+tayOQub5VcCVjREqCJOWls1Hq/JTM+erQfgUmwhEcJZZtlIBN5a/f\nZ+rHQ1BDd9nHEdhjholGkqjrbsGmYHVFvJNmVxmdLIG/ooJDSnohMfyYQFVm\nF5ZAbgYgLpnOadzI0lZul5nGYGkFkpvhaZ2GbDr5zM7w+cnG1cmWxdaWIDbF\nNFdAFf+a3MkCn4swGNQndoRWUWNj3iqP1fVq4zhQQ5MsdiH8UrERrh+LRwkv\nsH/KPIuOrdLPSybF+SnhuqrasfpLavqSgAz0SQZ+TfGpi8wwrk0OZSK2r8h3\n04eJna1Uwg8a7x+Y2f3OUtzsotYkMdZZ99/OcKjw8BB7V/Lja0hjI3X4OK75\nBzRL\r\n=gHrX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDc1OOlVkrxeL2j2F34CRPtHbICTG+nBs70AOwQ7JAd6QIgTebUgg8mZBMfNuMyj1OkqAVkIIj9q8vjQsTUV6qe9lA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.283_1612335189715_0.7411109558547719"},"_hasShrinkwrap":false},"1.0.94":{"name":"@leanup/cli","version":"1.0.94","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.13","@babel/plugin-proposal-class-properties":"7.12.13","@babel/plugin-proposal-decorators":"7.12.13","@babel/plugin-proposal-optional-chaining":"7.12.13","@babel/preset-env":"7.12.13","@babel/preset-typescript":"7.12.13","@leanup/cli-core-e2e":"^1.0.94","@leanup/cli-core-format":"^1.0.94","@leanup/cli-core-lint":"^1.0.94","@leanup/cli-core-test":"^1.0.94","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.0.0","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.5","postcss":"8.2.4","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.6","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.4.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.22","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.94","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-ZvF+CKpIoE0CyWm7kMQyo38BVmdQPTxOxFbK1wMoB+YnM1cjGXVXoe3jYUCp+ZxQIfvgFdJLOdr16xeeQtctIQ==","shasum":"7adb5c1335cf7743eecbe37598b0f1e64f01e48e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.94.tgz","fileCount":63,"unpackedSize":150534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHib3CRA9TVsSAnZWagAAgosP/ROqAb2CdBIcgj2oIu3E\nPIRZZ7EYjvwuQhw4pQWj+fEFKAAss9gsH8pS2Ra++QFUsxXrHQsOcXjPmwZ/\nvtFuHRmiLuyIl0QI1Sp0wtIz+XY7aLNN8cRdH6Lbs8r4jFE6pIYMEcCmzKnm\nIUEYGho/3btcgj/RgQeTTcQD5hQFN5ALFMvbV7mG365rB/7XGLvZyBRC/7Rk\n/wucRlO6uvNNNr2pybhxyCBDGIe+DtGDek3QYA+kycxmp80bVcRrhQUnucpy\nUM7PF445gybrYsPEFBGz2vZLKs7dBCkaLU5XB5qJ90s0KZNqcvOw/3ClKGUO\naVpW/CATVRy5u7Gs0wkFEEwtiLZLdjIJsgb2AH2P80HqMjb7MgyVeojeYBse\ng2Su7T/YD+6uP2o0qT+ZQi0Uy4knzM95BY6pgQoE42STSOWw+KGvnniY8R/P\neSAgoypR7zI5n4rWE5vWs76XtMS6MGzJFNrR6+WPBw8TWWrKZhzbYKiC7h//\nF2+U3aAwdx7cb87ThVFvlHm0joxd/tTTR+nNRJ2hD9dQ8Fah1mYijBLkm+O0\nPFEuVepskel7ZHUZqToo82DW+Z4ykAm37pCQRmSWKfwrbwOT4LenMAJTzcbg\n8Olr7+rD0jOVQjXw3E8CQiIQMp9imHq3cwKwb62AisZd2Q4DO5y4TD8D/fmn\n5rqd\r\n=SFXr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHXsounnZGa/mIo0qIeHPyFD+kCNup1kw8wyI9O1qHNyAiAuflCsA0BoX718s8tPSJbVAO7qULUSFms1paKEL1Vu5w=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.94_1612588790727_0.6477204809009531"},"_hasShrinkwrap":false},"1.0.95":{"name":"@leanup/cli","version":"1.0.95","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.13","@babel/plugin-proposal-class-properties":"7.12.13","@babel/plugin-proposal-decorators":"7.12.13","@babel/plugin-proposal-optional-chaining":"7.12.13","@babel/preset-env":"7.12.13","@babel/preset-typescript":"7.12.13","@leanup/cli-core-e2e":"^1.0.95","@leanup/cli-core-format":"^1.0.95","@leanup/cli-core-lint":"^1.0.95","@leanup/cli-core-test":"^1.0.95","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.0.0","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.5","postcss":"8.2.5","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.6","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.25","tsc":"1.20150623.0","typescript":"4.1.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.95","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-Gp3zpw849RzytftdIQLtSeV0inF6Kb/ZCyEQRdSzqe+a6LpzECfdwuPwluyWxXFYpD1UJWFXwfJUm3au26/s3Q==","shasum":"ee60d8dfaafcfb58f7d3197731c75a61afa97f30","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.95.tgz","fileCount":63,"unpackedSize":150534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHvUXCRA9TVsSAnZWagAAvTgP/0NrJxDyOtXTb+PUCwz4\nFflzFyOzycSmGczipetAGMDiZDKUItjosw5vvzuPoJDEfqSZ2vV+gZSIc49r\nZsnti/5Iik6cWMkcSTMxE5nSLo3/ym+8lI1qIWGLrw8Lw/j6wMLgNh4ZMwUi\nalOYunuERE/QfyEKlZ+q0A2w7JfLRtImq27fS2GWgL8ght+rKaQDZsTqnWIE\n9L11ei5N0j0MGC+R14660F0dLFO+5Yz14qP8Kc2YsbqyE3tW+4hlsU11nZ9M\nKiMW1jTPawLl+nUVo7pqMLkIAq2jWb5QjSNz3F+0KJAqhMOW9oBef8V/dOAY\nsE9fFmEs2ysFAQkmInkfQyFgYvNZSZ5QKSFiN+Bd3n/xw8WlkfC/nWxl87Km\nzZl3ojIdBO1tYU63O5PerXhRCxcElnJ9yjXEmK3QXPRaAqs1KUGGj9NUGPnz\nRINui7qPXl3YwhLRbBbyPJweUvBEc+rp3ng3wRCt0CmC2NUyxuAZSjAfsduy\nw7XK0BlMbjaF5Cp8p5gLQPZRkq0pfBWPqwZqKHKGa1KagTGrncPpeKpk/al1\n2PblCPs1FHrvnFXlAHri0/9FaspyZaknKnD36Rc2rmAtS7lCL0obtn0zW0ct\ngohljtsiQxdjWPUTYxa6JrFFWw8NF04PKmRMiiwhZKjyPejDR0QAV3rufq5+\ngn+3\r\n=Ey1N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYMW+IrEjh9oIkMRs879tJAy1VLr1qKfOniYvVAFZE4AIhAJi+0WfR+RbgK76vDo9XExJOpZmkQmSLAd3Df1Rlo0BN"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.95_1612641559140_0.25240389622563075"},"_hasShrinkwrap":false},"1.1.0-rc.284":{"name":"@leanup/cli","version":"1.1.0-rc.284","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.25","@types/prettier":"2.2.0","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.284","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-GEsNiCu0nT6gO+Fvd1vHjSemxKOMpLrH8YPYOcoYju1046lZATigHL8A7xHs0wrQxVCb7sHo2ZP9fV4dS9vmtA==","shasum":"d59c56f13abb7ba7c25ed8c2053ccfc947a9cbe5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.284.tgz","fileCount":67,"unpackedSize":139801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHvVyCRA9TVsSAnZWagAA5BQP/3SIRfhXj9zhVCw6hl4j\ncfYIoC2Ky88pZzLd6QqulT4DPXGdONMULuSBcgRpbU9dyEXl33gstI9rKrM/\n+roc2Nfn4XVeqcSi0/v8zx6z8xCSpAfXfeRNGW8pKZUtiYJYE8lCyuPyh++X\nTTDl+xH5ZoG64+U7I4rUoVzHSfmi2blpUsXqLeaM8HgNrOtE/+5+E6C+ekmj\nCEVwq/zF8WYZcns+AsVUjtZ1lC2cChpoRl40TTOIxQc5ORUNNowAlX1VnpKY\nRS3/2RX8T6oJSWNRb9gFPUqpS185JEqlYCmGb74lfD5iuyG9ga69WhLI6gLh\nEWqGJzcH0pXCABddxAWsGj/LKmcVOoa31Yg4ccB4wC0VUR6bsnxj6v9YtEXG\n32kgpV2pV3sZPfqitybsti2blbi4IC4Kbh06wG9aNjFP0OFJnKDfA+I+vR0j\nKLdTBgvtJDfaoEy2k648SQn97bEJjdtxUmxvhAA2rx5q9wnFQlr/ICMkPuMS\nARAL+Nrr5PodLer8OvDpvdB9k+wol7WeYoTHuP+hikWNXY0WIQrM0Yc+Q9nL\npys0bGuwBHGcz38mnK6h1d3bpPEweWPHY6CIpTocaCEj0RnSWMWDydazFe3S\n6Ny+3J+FCypQSd9pj3uvy8DF9WhV+nAB8otfNaZanKy5IrFEFguWHPCG1Txl\nUuxi\r\n=N3PA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWeeSrT/UTeKn61D0zL48sDJx0Q7VGyZRIhyehwV7jIgIgQlpRfm4XpP+53skkxCVUMITZirYteCUoYBbPhhsC1uQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.284_1612641650285_0.23132137520549256"},"_hasShrinkwrap":false},"1.1.0-rc.285":{"name":"@leanup/cli","version":"1.1.0-rc.285","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.25","@types/prettier":"2.2.0","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.285","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-zLqnxkwxH0gpn37UQCGaoPJpSXfxr0yUB0U2TSVubaCjxHkJc28Mlrqi7Ba7AufNUnXq4KJAy4GFk46/ujaeOw==","shasum":"9d994969fba33df8047cd3b431eeb248d13807b1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.285.tgz","fileCount":68,"unpackedSize":141174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIG7dCRA9TVsSAnZWagAAgq8QAIA/U5L8y9rIg81Mhw+B\nsdLZfgVmkjIBzaUQunRv2x3cX54tmXMwUhYg05CbXPHE+XmOaurCfGuUjgQt\nrClI39A0zP4PlpGdDGWWc16QVGRkqTz0e+zR2VvVVXocY4lj4ozEQ1YDFhcA\nQICgvdbx0r95jFa4F3f0i2FoG8/vhROBgaf/Bp+kBtap7LijZa8F2cTTIJg5\nV7vOnQWHVs18vzdXP73KyuP5SyZtZOvtQLTLnpeHqNND59oa3CfTdJ4d+P2K\nIOqRKlcKC5zoLyUzB6jhlQE/+2GcIOqaQ+Fi7E5ry3OZNPWse+SwaQsK9+LQ\n/xAAg8jjDywuz+xb66OC02JcrPAMLza64kQY4y3STxEkQO13U4/gkFhBrpKU\nCyg3A/o0FtgH+pEdmL7OWin/cPkwYgSdmqVAUZqHhkjtGS0PhqKYS32uM01v\neA35UaH8d/M9n+5tS+O8lPWMWzy/l0ilKbcxl81zgnlrQt+m9MkVxH4AKe7F\n2XvjLBUSLC6Wbtn8F9Z9Muxp2GyGfTEsqW7yY9zf03zrKk2myNzBD7rQTxVl\ncZ1yCpQl1/pOrr7hZ7OskjXG6AI4685LQg9AYOMo0tH3yDGsXbziLfzz0s13\nRRx/xdW0x4bDBayTQ4A9MXt7T0Zb3bMiKgxIQqQBOmGL4r0NUKD+LoPeVa/d\nZnRk\r\n=phuu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/UPichVSPXDHv6uiSGgCIigyYnHziJLflc3J6qNg+UgIgMWlB1BdpWAab6aaY7v7uFhQ0YE5Gcb+8MPDZzeTfhiY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.285_1612738268900_0.7770328964947439"},"_hasShrinkwrap":false},"1.1.0-rc.286":{"name":"@leanup/cli","version":"1.1.0-rc.286","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.25","@types/prettier":"2.2.0","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.286","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-XGeNqA6Jhlqw9NM0G/9pp5BwINlxz0+R/uG2+gtIq5mYiOVSkbbw+tkIVirJk37+0SRo37cPE6YHrslFDnqWEw==","shasum":"84cffe7258c7edaf4cac55532bdf33788f30ea46","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.286.tgz","fileCount":68,"unpackedSize":141174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIHpbCRA9TVsSAnZWagAAv2wP/jVQzmmd5yJ/3hurYo43\ni8ig0Bx2ENobxSFAkfEvAeLG2CVCqP/aXD2jY/xEqsUdKK5QzrvWsGhn0t4t\nRkZfACRHK+D89hxR9l0o70axzJLvyZuAw1bpyaClM2Y3SXemVcnn9Wt2aBAr\noNfD/oKtZPwFzcTKb5VI16LnL7hr1saKihTlCnVj45MqKQn4NVJydEDm129r\nLxCC0ssxlWABkgLtungdHRAxfKHHQRISWwU7LX+DVbuCmjvoQqq5d6BplCSW\nQ4NOVXUm1lLi7rPTlvwvDvXGOJlYgkLi/tKOnImZeGB125uja+dzV6OWER1B\nsJRitTBfFkGGgAuwTQS4wqXRr+BJOE0KMP0NMs9tKgljuCDCcT6ayYOkBXhO\nXfMtZUbjVYLCaGceceaRORBV3gJsGQLBwbDDm2pjr45WouMuzaEBTxhU9Dl2\nSMQ59lKi30ukhaHimK9iPxEs9A0rUcf1TGpEuebiIt41WMbofrwwAhiJBldp\nB7caAgv1rfclYrSGruQ8+fD7itcC2PspDCTvIZvOEJNApSdLVkRHWS7U5cZT\njqXzHWSM/O1xI1VT+tGQnUlAVTDMwaFHIe/g8zLe4KHwejAR6zyKXce9b0j9\nuaOrTzls6gJyAwn86VwbqFF+APFp2dM2ujz9FZhtOBN8w2gFNLFKMtRVwAel\nlW4U\r\n=VuiK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgYkMET1sLYUviE4Ht2jRMBQXY5wMECL97J35GZqHJqQIhALCkqPFgbbhB3k0v5b2baXDhjdcX4SEI/7JCdgWfRmFD"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.286_1612741211256_0.18280115920200135"},"_hasShrinkwrap":false},"1.1.0-rc.287":{"name":"@leanup/cli","version":"1.1.0-rc.287","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.25","@types/prettier":"2.2.0","tsc":"1.20150623.0","typescript":"4.1.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.287","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-+WNGmmtQCdgnLgUKBvHoWLpGu6qmgoMeg3xFwh+sfIb2rRaA6L+AnqkhxQ5ui628oj5se+hA8ekPuIX87w8lOA==","shasum":"975b980fd84e7423c42ddd2a8434a2f28fe61f80","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.287.tgz","fileCount":67,"unpackedSize":140761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI3fwCRA9TVsSAnZWagAAxfQP/0e5a6U3efVd9xg3wUoC\nksRXYIQDDlm2ROF2qfKmsz7wvuG/IivgTgcFVUR4tFreHNTnpSz9cMYm2CoR\nX/lMZunGG5+ofgBhN0Z3hJI/ok3QDu+wyxDXND7jLEEd4WmcUkyrsqPtTbEr\n1QLtWp0phKvCnzjVFSQTMUa7K/I0RE6KaGUgC78SWL15kZ62KubBlUnganJN\nDqpTYEB7jk4SwyNMQGF+iypfsrFED2eJw1DJlH7i5780EKCtAHEr4HVJlook\nTe8JYW50fgey6xNQhY58O0YrSmh5551qMnKI3bYAxgw+0Abq6MQ4tYwaB6U3\nCO/ltuYA4XeDi8RMoSU+MIKJbi9W5IS9DeYXz+6rupjvqpFMjUd1TtXhn5t0\nc492I9ZQwoe+w1UDwxGRP5MvVcp0shKIUShRQvwGFh5cpjFTZRR2sZFCDyyM\nJwl+QtcP+NVrkGZO8zddj/ERZ8cvxiKFcgirfvE1bO4I00F6Zr5Bofb75Haq\nChFbqyzjlDB6MwMFMCPaBQeUtN0TTlaCA3YeiJZxrH3C/cA4FUst1a4WcM8I\nQLv8GXjdkkBKPdBQRWwYzdDqKyOxOAEX/YHhae8FKH+9cOn/LCDOk77vGr1z\nNm82zOCSyBIXTBqI8ode/9g8Y5kT2W/BMKerlMiCoxjTLi6Q+KuIb2JLYz/O\nQzHf\r\n=oZmx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAQCWjTW8POj0no1g5HMt9digGcnkfgRX5onJuy6qvo7AiAGKxT4Ma0CecHFmC928KwsJ2MrUeTIMhSZboaWVtkTLg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.287_1612937199988_0.040042338372408004"},"_hasShrinkwrap":false},"1.1.0-rc.288":{"name":"@leanup/cli","version":"1.1.0-rc.288","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.25","@types/prettier":"2.2.0","tsc":"1.20150623.0","typescript":"4.1.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.288","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-LGXVkEUmFQOyHT5kVW6HQFVvt47i01k9v7c+I9zZ5i0u6q1lj/YA48y4noTHJCm6gSd8e+206nmodRfqObOrxw==","shasum":"bc9915c470624b2e582265dca43479ef89f85631","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.288.tgz","fileCount":68,"unpackedSize":142250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI5QmCRA9TVsSAnZWagAA0DwP/j8txYxo1BMmNtHJ5O/a\ntXHkr9k+Nzm13yT0FfNJet69ujSHj4JNoB4LwPSAxuF3Xz9N1tKWzGKlGJZs\nkaLMWDKZZAWS0YYlP+IBBpqooZOFTsv9QaVAx3fwEam2Uk2SrxEiuesh7mfm\nOhjYcMKtlWT157pHR7ng8oynGoc4siU4PFC96T9cQnR6Df8sboay5XAz8D3n\nbb9IuY8VTC3MSUcMmj2h48TbP6R+qX/At+5pnl+q4e1RDfudKPj4EG01QZAh\nnXMfD6e0y/Jck/nvPRcBYfFi5P5GG79eUzOhFseqsYP4YpV0QeCeMcRz9Nv/\ngOVK/Mn7ISGAs4dpzEPA+6/S8HFDlwIDkYd0QV7lWgb99t1Ne1bc4K94W6i6\n/zWgGStmsHGAsGf7s4KZ8zp8MP6bdnMiRvLATUj1dx2auvdRXuBbDT9Rfidb\n4nPclfIBxYi4PmjFGjh37sZMbyzXavMFBG5DsXg5HPSm9XcGJBzmVaPtYNvJ\niPfgtlVys+N1yGKMT0sga/8e6h+RWVFf4rQjBEErJLeBgG5XeAI9cigMUCz1\nb+oelI//+lXH0yotdeZFgQbazH8/vKjVs9xwg7JtMiHT/SbEq2F2B25YzeYN\n79M/tJn68WSQiMaGkKf2NEZWfr3+xg2dMilqux/TlRTrO1P7jvWzrYuaGgVk\neto2\r\n=Iu97\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCm0N5u6cFMrNChaAUapdfOUbIHVjVhtw91AkjIvbL52wIhAOHe4g4fVLLsi34Lz5g9ri40TdKsyCMeloLaMc1vS9xs"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.288_1612944422371_0.7401659799356859"},"_hasShrinkwrap":false},"1.1.0-rc.289":{"name":"@leanup/cli","version":"1.1.0-rc.289","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.25","@types/prettier":"2.2.0","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.289","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-lEZt9y2QYFgTPZs92Cm1gG19sw9NBxHNr4wK7v+APGczhGdt5O1DyXhPYkTbsSA0B6kW17qTFsthwRzeuRAzBA==","shasum":"e476648a51c3fb8f376e135b7fd3527740f8acad","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.289.tgz","fileCount":68,"unpackedSize":142094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJL15CRA9TVsSAnZWagAA+Z4QAJGCUyz29MKLhBDLPS9R\nZ87fTxs6zyXX1ddBS7wgFZFofI2P1kh/gYMcU71zarXigGONp9VO7GC4rtqi\nLAAZyO56UV/PFG9hoyi3N9juVKEpzf/3ednjfyKpTK1YFzIfLX7aggWGtT+Y\n9uv2I0OZ4HwsUKvB6COlkA8PQ8Cc2hcwKhJGS0v5PzOR416LlIFiXwvTD32N\nRdNX9zdUW/gNZ3JNvFV4DEnhmL9VbI0SM51s5y+0CL+9PFOlpli4FcCumdbI\n2KBI9kPoE6V3NXxQFj/42Sbi5ejFKOmCZ1fy8GVo3xNy1SKkNeXpG1eRGD2y\nDbPw9Fy+R7tUIa9XMeH19XMjaWVPMi6s37EcCukKrzvlYAAaquOY4EpIcyt5\npneoq5cMMtjWGmtptiq9PHjg8Yarwc49jGFMp1UdmR0bpvw0dzu48cdwYo4D\nijZeWlovPd3ud3r9uWTNputdu85mHmlpbPR/+GLXy5f+74lozSIs71NJj/z3\nrvw9dm5yVYEOQ7ER3YMP4uTnSlyJez1KHyL+01BrbmnccyazzzJ/qgET6Cmb\nUDCOcPRgIwi/YlImPC2d3Biqrx+voOGbAVHBC5ZkoiSDIgG1C/PysJIFq4Wk\nCYQZZQYajtATwLahbsKxIujJpln15Ha4eS1lHu+XdjW/aRJFX2dOC2PQ1Nat\nsVbl\r\n=9UzV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYmdihYGUQwr1NZ4CO9EyZ9iaQMuYli10ksec1HndFxQIhAN6lFwDle4U/X4RG454Wejw73Q7O7XMIG4BCqrLctn6F"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.289_1613020537353_0.2685314211993344"},"_hasShrinkwrap":false},"1.0.96":{"name":"@leanup/cli","version":"1.0.96","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.13","@babel/plugin-proposal-class-properties":"7.12.13","@babel/plugin-proposal-decorators":"7.12.13","@babel/plugin-proposal-optional-chaining":"7.12.13","@babel/preset-env":"7.12.13","@babel/preset-typescript":"7.12.13","@leanup/cli-core-e2e":"^1.0.96","@leanup/cli-core-format":"^1.0.96","@leanup/cli-core-lint":"^1.0.96","@leanup/cli-core-test":"^1.0.96","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.0.0","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.6","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.7","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.25","tsc":"1.20150623.0","typescript":"4.1.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.96","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-bUi6JP+squ7arC89WGbL8vZ85jwPh1lJA1hSKBD7ybS8GdO3ZlUmSHbUhj4ccuvcbhINAQV6OhuUdAtFGQEUMw==","shasum":"994457d0ea793bbbe5416d9e955c52b1511c0304","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.96.tgz","fileCount":63,"unpackedSize":150534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJiGYCRA9TVsSAnZWagAA0GcP/RZyvjWxfvzi2UYoW2to\nlKhOTd2zZs+zJkBjJPf8hK7WWd/51MhHIBHT+445UEGFRysZzKm+Cjn6zbyx\ndMe8a2lfSn16L9sVdFT9ZGqW1BeinA6Bty8EWZD2yhxeugYNuRywQVrZsLC1\nVYu1D/dlEBarhMeBlkQHUbpD7FnuyQZ2lacKb2qLRb3VRzv4dntE9pz87+Vy\nM88uzYywQqarl/iyX2AsW9Ofc5NTcX37Pb5tb2rGATZrMSMfDCM79wrltKXN\ndx/4ft9EkqWesBUOoFE+fFRjbQiHEJNZ89PY3rjIZ2TgRk7GPPl6qcZYBPdT\nH8WLqBBTWKFXEX6FSlc/uoY5BGokXZTZg4GD11YICM04VeUoI0AXmOLSyXzg\n3zdsGQ7cbgafpgflK7ggM/zD2ptZvlVJuRQMMawjtOUTgb+krEdG2uJyPhuQ\nIjUG0v7VxWhg59wvpVOVHmbK+7bVz72WPMJGNmmsft8KTkooe07ifJcB9/Iy\nESgk3HSJC7rYPPh+N1+MUR3IfbAuadI5YR6dulfFRTP1Q8AuU+kRJsIGlp04\nYbA+BiWJs8kO3muIRTwAYNTkm+yyFcGhljRXhChnrcoNd5AxVQrR1e/IYwe/\nhEPHIqYw26YXNsNCsxFdxE/R5p+wB+IxUVqr5Zgx5EOpKLICkFj65eSEE+MH\nakX0\r\n=LPNu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFqFQCSGzUfBoyC1mX9vH2BdV4B0jzHR0mFhUjSm3hgYAiEAhpZfCr0e4pKXtoDzGoj6dOz8jxveMfkZ3nq0gcrJIVQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.96_1613111704184_0.2882560370564231"},"_hasShrinkwrap":false},"1.1.0-rc.290":{"name":"@leanup/cli","version":"1.1.0-rc.290","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.26","@types/prettier":"2.2.0","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.290","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-HaIHd4iCjFfHDNhuVrWcaNqTAkPLRiJwrk/Len5WdmhWTWzQg+se+oocBIVEyV+OqYesyDUnfpe2XgvtXMsq3Q==","shasum":"6c7249ad0eec6a72c56a6a64b705ff144af417b4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.290.tgz","fileCount":68,"unpackedSize":142322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJiT4CRA9TVsSAnZWagAAlFcP/jS1VmASQGlju3j8L4Oa\nGaUSeEvNsSo9hUVKKKilBJfEXWjHbstCubyH3weNe4Clrw5kYJObw++M9W92\n+6xJ6PxL1VXn1d5BLc3lLWH9ZxOapSzZRq9f/H8CiXSU/0F6UQvtdmenX0Wg\n0DOUK5hieQZJVp7IEjd8Fat8T4z/wLYGwdoZE37Si4l2RBPTHsYiENoBoLol\nt8u7S7VEqRqFgxm30L0/MC4HI6s8l1lUXkW6CmWZlPzmOh2phxvdHgBz7NPl\n32SaPyhQrsK09I1aCbGeB/EEHeQOB/PFe3prS5LtwY+KD1GsOpLPiXPbDahF\n7QgGiSr77dLS6wW/BhiKtjIEjblZ6FnbY/Qj79S4Kqw4nR8sorvlkoFDl8az\nRF2qYIlrbWL/ZMtA0BBPAYhxuUgoKyp1DlTDQRfWUExiA838+5/QAIKDGzvP\n8K/cdOc4a+qwblebarN2Pz+cQO5NZnU5vytIFqvqnvp0joCTG0ypl1RkA/SU\nal6G6t3qrsvkE6Dctv188INuBz8ZhHkLu0Rtzzoqz3BiyYb216HXEUA4D3fJ\n4AFRku30FAHT8huxxoooCw3gEJU1kClVceS+5Gv8LmOqS3Z8/P3JrLvA0ymq\nalb4ciKRikkuTRWhYkS6x4Nyj7AQCUWAvZV5c0LpC0hFzg2UnvUHlkFRU/Mj\nie6G\r\n=V/oo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxYRuCQJRL3h8IjyWEn9WzFsRpr5rsdiL0Rlo9ijq58wIgUWebWjyu7/MYzkhn9m70Jowr+/p/OQL0gI/wDOPT4kQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.290_1613112567432_0.8156669461271104"},"_hasShrinkwrap":false},"1.1.0-rc.291":{"name":"@leanup/cli","version":"1.1.0-rc.291","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.27","@types/prettier":"2.2.0","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.291","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-PRcKuymYeV/F2bGrKBJwQLizVXPUHj1EzALz6geZJ1b9zcO34sKXAp/y3TwHSm7bcToXTEcU1MAz/44lgDGpkg==","shasum":"e3cefdeb06b691e992027653959ee3e8d34efbc8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.291.tgz","fileCount":68,"unpackedSize":142322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKDc+CRA9TVsSAnZWagAA1EMP/0Np8DcZy5sJ80aJRfkj\nMHvzvgpiRoQYaXsm3SaDTfrUZUDyBtYKDzXUjvlXqVUVdwgG35ZWEFYTtQky\nlGTrqkIIFwtclO2i4QLm65xpne91V26aIEwdXEsfBrxegc+/sYnIywEERwaG\nNHuunOr5uHZnbCw4cJGHMOnWrN0shtsd0guIHely7sXBfhZmPTHO78DXUNbv\nTnCjOkQGHCReOGwCoe4JKPca1M8WI+az452wifasatRCoaxqy0wuJ6gLrVSs\nntk2XfYcKD6tI9U7YroUOlbkBhWzyjQCgCdB9LMu6FPJFXKP+rHXDTji44Ep\nfEVobDzQlSTsplANZUxslKcdLr1dOudTQqiMlVFFdCkT+ZW1ub12QI3acsuv\nv7MfsoGh/BvzkuSwgnOO1zJvmUKTbKThJq3mAen9d4tkVNTZrK+H1ESwuXax\n1HhyECxJfEeKK2Et/iWeRBxiIZJJThuiTWd3OOoZGTzfqnyOTsh1giFTifln\nsV7XoE2wbFll8JB6Oa42xtNesYSHw+d9MPC5evlPZHHT1Sn5gU/IMd9okfgS\n8C2Ijfi6tIDjmexk1bFsidp7zRpjh702Jdk9+MOeA+ab0SQ38qS3Bo6CW4hC\n/tZknmzs3821ocKeMKULcYFSc8jz98J/MQSA5OdWeD/6vgv2i50WQsTwtR6K\nDpMU\r\n=NriI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBamwyTKZFXdvu58Qmokt6OevR6KsoRG10e4wmA2K/RnAiEAviSFLQYBGU6Gi0LR35wxRKAUCSBm9uGvaxf1St4WTJo="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.291_1613248317919_0.3936037290686649"},"_hasShrinkwrap":false},"1.0.97":{"name":"@leanup/cli","version":"1.0.97","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.16","@babel/plugin-proposal-class-properties":"7.12.13","@babel/plugin-proposal-decorators":"7.12.13","@babel/plugin-proposal-optional-chaining":"7.12.16","@babel/preset-env":"7.12.16","@babel/preset-typescript":"7.12.16","@leanup/cli-core-e2e":"^1.0.97","@leanup/cli-core-format":"^1.0.97","@leanup/cli-core-lint":"^1.0.97","@leanup/cli-core-test":"^1.0.97","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.0.0","copy-modules-webpack-plugin":"2.1.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.1","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.6","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.7","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"4.44.2","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.27","tsc":"1.20150623.0","typescript":"4.1.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.97","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-P2EjQPfNw4oRf48oVGTYklRZ3DMyMKxPXlRkP7T+6RJZUDw5nKUTUT7P/31dYgf07f0stc2oiVF2XM0jYcgFwg==","shasum":"4c2ca03442b701b7cff30ff7d212b138830f42dd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.97.tgz","fileCount":63,"unpackedSize":150535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKLLkCRA9TVsSAnZWagAAsfcP/jsKuYksS9g86ninErh6\nTkCCGGZ1kRwDZHCJpZOF0Bct+MIB4YVGaEw+OgFuZkpO/tunOTFFrbeB1/UF\nhmQR4bYndVY9dLt5iUUu1V6MK3r+BD12G+XFGrdX4LhDHVlTpgI0LgehMfmL\nLzuDw+PydUr9q4mrH8pWf0yW4Yn71J41ONyeiB3zEH0QTEqHNnCAGSobGQJP\neO/PunhqvR2DejgswyW8BDJCVbRfO6NAgV2oMyTHcZNoe5CvqjzF64wnwR6Y\nsYTToT8KJRCklzeBKSxsRazSPjNcCKmEFcMwjEl53+TIkw4qJE+bO9ixybiP\nmbW7R+z1jXwPOuzbTVHqEg41meRH5OuzrFCdk/UlnOEuytY6ZKitgYgbwHrT\n9ISouO4n8eDJwptupAcfd4Xhj+c7SeNxccLglYEpkY2TZToNZItOLrW3R+5Q\nIuAcIaml9zwxDrI+u/+Z48DUtyWKKVmPuCR/ftMlx4T2lmqo26fwf3BlZnSs\nlp9ebKGDlQAV6pcyycWYG/P31LSC6TLXB8/b83JDk7kyMw2q8pOT2KxadJfM\n7JfsUvfXeL4CiQwowGVDn9ZAP3kUDAy4sB/9jviU1Fn6bWUiaT0w8w9zI5KQ\nPD9mIiO/HoZv/zd9snvIfCZpmRx7e91140GEouFcRNPudHnnd923oHErt05Z\nLrU1\r\n=7prc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBw2oFkEAsXdThXlZJL3TsFB+vHbQ1GSWAnkojb0qTIAIhAJgeYTwuSGR51mU8vVLaeh70M3wkKl/kpwMJ8/bZz50B"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.97_1613279972457_0.42815082685831984"},"_hasShrinkwrap":false},"1.1.0-rc.292":{"name":"@leanup/cli","version":"1.1.0-rc.292","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.0.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.27","@types/prettier":"2.2.0","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.292","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-jPpZ1hvVPDTqbYyLxGi27rtdBdYJEpSOySGCr6KOOrxI6NQaYoMstil9EONXwjEFM0eUv0sTcyfXa036itATJg==","shasum":"3200ab801848b9d18caae433b437b6dd9f8bb92c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.292.tgz","fileCount":68,"unpackedSize":141168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKMPbCRA9TVsSAnZWagAAFxgQAJaQl0dNiAwz2wz0JmEb\nT/wVXfxl0kxVWGxQz5ieNcBc4G+qZsidB0CIhfpxLp0PRRANOMYSCcLpnfCk\nLpWa77EAtbvgaGYaXibHVQ+zMzKimlTHKHWAx0gnT4+boZAO+SMfuyy6OyEz\noRDxOT+2mKn4vq8xzP1Awfw2SqKuNqtv9f/S9RNly7b14gWWC5uLk3h2ojSZ\nLseCQk7m85u0Q/n9VjulZgocMtOtzsiuhgyN2ll3Y/nY3HhEGtVCU2ZUqiDn\nFNbMrNExFj+PO4lcgXT/zDlCDoRsOJV4AruvZu3k8YKyOAPaFxKUZackYlGc\n0Ii8HxDLncvSQgc0kpYbwAsBFDhYOBnnTuJvor374SrYXhROY6HSwa3W6HDV\nmDuS3qpZJ7bQXkXUfP4U7ID/LMbardRgh4qq++JEIuW0UbsSWKnH26taOpVb\nHgKJMRe6KIoz+zgKvdA36Zt7lnLm0d9ocnDAyW1jT+Wa9ORz6Oe5tI5SxYDm\nvdOzpi61T0NcGEe+0a1dH/e3JRWftfNefGyhu0lFA70AcXiy1p6kNLOoveZk\nRqdvD7luYAFtMl/5gd4DzAm5L+q1oEbZj41tPfR5gSSfEaF42z3dct09+NDX\n2MVBznIftbC0sk74oBNuxVvOIQ/Zh5c9p5MA9p5IZbHwxuZWX+1AlckQfDhO\nKajn\r\n=5dW1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/Tx4S+IaQTC0aKzL6pPIIea8u2FA0bjatU2KKNKuQRgIgdykltWn8lX/RjrejqciqjTG9cCm7Kiad+KdND5n5Rfw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.292_1613284315495_0.7216508018586132"},"_hasShrinkwrap":false},"1.1.0-rc.293":{"name":"@leanup/cli","version":"1.1.0-rc.293","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.28","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.293","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-68Qx9zIjIFjXOvziN/yPxZ83iquzmYp8cyPu5hJxvVgRyyy6cc4CMo1h9i7ieWifEkEak5ashn4eMIMkLkkRvg==","shasum":"838af0311c30f6688481d801e2b2147d68c7459d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.293.tgz","fileCount":67,"unpackedSize":141141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLrqYCRA9TVsSAnZWagAADYgP/RcLS+tqXyoJ0FOVoeeA\nO5wsC0ieG+2+eT406R4PB17ih0cr0oLWoN9fCdWxX/YYM0mvlYWmXn3WdEgh\nZs/ZaMpfzuvEnoA2SeTZwiTXb49jO26OTBCC7n7RkvY2ODz0LT6uhF+M2pxv\n6Bnq4iRtGEGz+S1JAovoh7aM7suWgWIvDaNZDKi15FJMtz3mOZMxYdDvTW1v\nOQpQ0E9gPiN5kzHXygt3L+mx+QUsxfUxKo2z+XvczkCovWoV/BS/C/k3RpPT\n0VhEyh4NBRVOQlBeXm867kI36pJ1tiRIdewAfFVIThSosz11HmhZqlMBfr6S\nJmr37cQaR2oV7w8biwaJ2gt7VJhn58dFCNDxkkXWCC3PlZCO0LxIa5Tae9i4\nFU13n6C9SsAanEMmFLa45c3Z1pVxmY7wQopOjNan+LrbQb+7n2cVKt9Ksbec\np6p+BoqCKkV4+W4fJPMXNIh/TqA3FesnMatdNTYNPycduDS90fy047dg8pts\nXZ+DybBF1mI3rMOZCxLytuZ/oGVv9zYSkuwoLPbgw4c761YX5eR6MhIiOwFu\nwS3a8YkG6NgTOTZkzgsxouIMyLJgTDvOy+2JvJyXQVzCna9NGV+CH9afLA22\nqfpZQ9DfngQ7WOdrzlZpwZ+oRa6jyporhKmGm2MLGUxZ7U7TGGKpjat/+yrK\n+3eN\r\n=/PLX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBxMklciMKsgpp/gPg1eD5EpeJ8Spuhp+m2kG4QxCVHOAiEAo5bYp5SzcD6A01/lXm1b7FwlULWw0vuUWryESZj8Dv8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.293_1613675159552_0.08253123230561576"},"_hasShrinkwrap":false},"1.1.0-rc.294":{"name":"@leanup/cli","version":"1.1.0-rc.294","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.30","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.294","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-TtOadJAuO3Xz9bxOgHGiRQbxs/irHrbvmIZw/+W3x4YoZaOSg+cOMUiFGfTvmThUZmV41y7X+ViFlOkG+jCNng==","shasum":"ab030d9d5407961312d36ec963fa06c132d1ba98","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.294.tgz","fileCount":67,"unpackedSize":141148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgL1F7CRA9TVsSAnZWagAANccP/1GhmG1VrVC+qnRO42F2\n8nLLNix8xhAmtDf150IgQINuaerYhcmC2nekPocy2rBt4gyDefrhq9uI10oN\nJub3mBvdTf919lQBLvoeurff2rYDNylHRinVh6/fiRVQ0ppB8rJEPKNZk5CF\n6ezl+3Uzyk75jnByBLIT6+kXyJ0oHyBBCfwlM6vnH1qiPb+6eOIDhzgGObkG\nAhfuiuYCaGjfJAF3GlIGYS44u5VD21BwoeegEQEMB2x7k9/3S4vrJihXjHcj\nCLVYBLHkHt34YA7SmBSCi7dXOo6vL5+uFui414u6weswXgoZx9cS86HMIfhf\niXr1j06Z7G/yXeKbDXP6S1lq3vy6gPRl9bj/N3Qec60UAExshi00W75cnsdQ\nqAbAMSv/M1di9W2baIZyAyazUxl+U+SnzaU1HlPWO/ClsFuf0Mu1fdaui6V8\nNx6etJWVJopaxaVfUm0gIMKWRBEy2qkBkNwYDy/E7Efi2TSFZCpGPYR5AnWN\npZKI5GHY4bKOTzB4eqDMXHAoFqk+k7sK//MIAzCGEeHordUX98qxemd5y347\nC/xepZ0UlX10x3uR+5YAhTzMfRpBQOICGyih1tpJNZ5pEHAeScJMv9r5bAJX\nFbKuisASpSz7g/NRczQPJakiukstQLSVkUIFjnTut6xLLMAgg2hGyZVt/uiA\nIGBt\r\n=AjAS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICbNcn6YcCmGflFgddoUlk+mcwgUmr/VVnBJ/rkyBiwfAiBCHpG0DCFjPQjWpqAJLC9V5tbdJCcHQYNmjBG8EuRoqA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.294_1613713787210_0.8171841065349701"},"_hasShrinkwrap":false},"1.1.0-rc.295":{"name":"@leanup/cli","version":"1.1.0-rc.295","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.295","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-6A6IS1lCkwdbgi8+2/dE+sBrnLSc46zc+sptJC2Is/UVLVvnXaofgp76L3iFw37zWgyts32y6p0e9A6oCidfGw==","shasum":"d9d695e6dab187af579570f7ad904859dedb087b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.295.tgz","fileCount":67,"unpackedSize":141148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMBtpCRA9TVsSAnZWagAADLQP/0KFYFSXEVpeWpEuA51C\n/VdPU60Ri49PqSmxLoSzKWb2hkzG169zrPQbdELzmvfdjDUsPKvKy2EzgoUX\nPrlETXOC0ItQfQovj1fpXD0Hn/Vca3lEQx7TsO40XUogE8RKg+wWEDd3b4gp\ned62wNCI/YpIjed3qfrMfv8C+CyulG5jj0QJwCT1XWJ9Ah7llRnP01JHHZk2\nQwyCk87WWXTsC4aALyVuEEvP/K1/ZxYlOPQjFbVOl2SxxCXR+su/EFTwDR3C\nNBLU7njKoat1pDQ4QmzCqoaNtBZ4tXPizZZQjqmV5I8ZfTXEMUB6KZ0xw+n1\nlx50h8NLU9UHDsNjgsyhurWEKE64NilHIiJohwEAM5jlvCTMQZWIqR/LaHq1\nSOQk4enclIgt1vJF/3PPKmzbhf4xi7YOb18AXZ8ikC8YPyHH1yN68yS67ffY\nB2k9cygLB52dKKkbWypMKUEon27kS7kXqid0pfWVCnAJWK73sbgyf18k3Dqn\nAhvJiVrVyONYuJKzf5g68leeKv4Y/BCAm77dT7wMtBeVoFK8UJRBVvAju+H9\npN2KSOA7RLiSURVQ1rwakTj0FfIm8L+ecCHTfUkrn3UkBQzbsAkcfaKOdSfR\n2LXBJ+ta3T+XgsG88d+tKZ5xHYrvzE6Ph9ILlX7clzdyiur3vZ6Y1E9/0Cb8\nOp61\r\n=AD1R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEXTkbh9J2FxY3IRFolQvULR42eQiIQgF2NwK5zKaxTfAiEA1+FzI1BBwZT5zNbJUBQ2BFKZHYXZmAywffXDTAkhZ/o="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.295_1613765481205_0.005882234008982801"},"_hasShrinkwrap":false},"1.1.0-rc.296":{"name":"@leanup/cli","version":"1.1.0-rc.296","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.296","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-GwFDAQ7+Nn9GJ7fzaOjgJ29kdD5kDzqv/gT4FO5LoUmrh1RuucxFSyLA4You0JhJ8h0qt+DT2Y7oeP0wtLnnsg==","shasum":"6bf9c843d397406384a08131da589d6582f70b4a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.296.tgz","fileCount":67,"unpackedSize":141148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMIBGCRA9TVsSAnZWagAAJ+sP/i43JvHtv2u56Ax1yNwz\nBMlkMppQpgeDIbJFs40rVJcOmwjWxYNUOF5N33Gn24Vhna2QtKrHNmEAC32w\nn77ppYBMpoEfxgaYaCQ57k/sLgCHnKdmmlGdifCqFZX7o1cdwKtonXuvFyhD\nNp7g0vA1Uw2pl6evzSQRijtLS7lWhXscGSPQ43y5ZEaGomQ3HqgjT9pSMMCo\nHPk8VmarVEtcmECLGTkKMEPoMtuniHa7sMYiJApjpT5Fk9RSpNt8bTWAN3LI\n7QUTmBWpMo6MLejy8xGfIFClP5pUJAyT1k2bMN2l+TlnIAZtIS9s5/izISUb\nNnBljpOBVSxHlyDfvAj8N3s6jun1KiBs44xxQL9EdqybL+ci6acQXfz47LWP\nxmijsh8yPJdh+aCr9P1hTHNOFi9q3TbWkd6xEPBsOxUf2K7etsUuGFIMr23J\nqnE5IbFCDwe7HO/O/QbVSSAGs62cdr8SEVEzQBpywIOQCOtkcTMAZqA5bgtV\nCynmmlBz0EnAwAy3ps+t3QLGlbhAZYObSpa1/xgDGKZmjjWjdMsdY8NdCtv0\npUrJhgAvF9alyee2CfH3zvyw3VHSyYt/BEf6tIarMm9A8O1JrLKVUQ0AAa/e\nbV2t2CGf7XAaL5xKxZRHk/atr3yepsplY+8u+deE3MZWFsC0DqA4otI6RoLO\nyegM\r\n=I5Xb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICkWVRK7Z1twksWQpK2hcOFYGXsFnvfvEYYNsVxZ79n4AiBGOpLBFWXwtak3BgB4k2ZX/foyNQp1doA426JdfYsUAw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.296_1613791302323_0.41741317750177465"},"_hasShrinkwrap":false},"1.0.98":{"name":"@leanup/cli","version":"1.0.98","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.17","@babel/plugin-proposal-class-properties":"7.12.13","@babel/plugin-proposal-decorators":"7.12.13","@babel/plugin-proposal-optional-chaining":"7.12.17","@babel/preset-env":"7.12.17","@babel/preset-typescript":"7.12.17","@leanup/cli-core-e2e":"^1.0.98","@leanup/cli-core-format":"^1.0.98","@leanup/cli-core-lint":"^1.0.98","@leanup/cli-core-test":"^1.0.98","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.8","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.1.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.98","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Fcrzux9aUyeUE3I7pSUOULp284ER8PSIFpHAnZEX3BD4K+wHw5F4V+T53/Ci9aWsUCh8tDhIg3EK1uflqDxjKQ==","shasum":"a11fb5e41a172c886207c0eab713a7d33cee83d6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.98.tgz","fileCount":63,"unpackedSize":151221,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMIIJCRA9TVsSAnZWagAAezkP/2I3cbXXMdcrKWkQxKFH\nihvew6y6HjOafKDO1ScrFw9ATvBsSyNxOHo0gGlbWaOnmk7qAPoGWlWcOYsj\nP3wqjTYIjmOEOjJd7d2Aik92000QzbJxkhBew0yqg9SIMXHp08BJgetg9Moj\nSusU5wcutQHC6QdNencVbyO1QXuGURaNHfT6fpXOHImKMBet6CVTRbPlNrXO\noh2cVstgIKP1inxjDYsOZj3KwLnhKsTKizLvF8NgQGujrPaA2CsO3Y2XbiOI\ner3hjkZf+PFqgA5b0nTSuzB2chc8HmhCMOIs5me195BcZ//LIMijFRRjnmqp\nmtnrnDee9WrrMQCQZ+rv4VY4X2PCA19H+Xi5q8qyogKqEibYJp+VYUlmKBYw\nVVPa21uHhoy68W5dggZo3ZKfNNVZviw1wJrwYylyD1L8nga4M/mridBpoo2f\ngm30i/mV6Q88pfEXkbvEgY/PeQbsxTJlikSZ+aLC1E4OYZx0bZWtodXJKaJu\nkjOfvOsnrU92uEGWqypXSy7VMf+dHTd6kDCiIN4LR/oHWRClQqzj/CzvRXZt\ndD2vWZ9kPHXtzdLwELWpmVsss6UMBcogCKDOneVgHehQWWzqiSsoUT40GFhu\nqMcPDfsWCcWlWlOhwX+g719VOBacR+5Qwmh2oQ8o57xHwR+FyqjnaINX/F6+\n8yH+\r\n=aB7G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICWhajT4beelJFKFj5BZzMfHp5qE0878y3xiI47dWGL+AiEA7HSjT5MdvYA7R3JWQuj/k0Nho+4bw837u9VHw7KKCII="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.98_1613791753295_0.9601998820017799"},"_hasShrinkwrap":false,"deprecated":"This version 1.0.98 of the package @leanup/cli contains a bug and is marked as deprecated. Instead, please switch to a newer, well-maintained version."},"1.0.99":{"name":"@leanup/cli","version":"1.0.99","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.17","@babel/plugin-proposal-class-properties":"7.12.13","@babel/plugin-proposal-decorators":"7.12.13","@babel/plugin-proposal-optional-chaining":"7.12.17","@babel/preset-env":"7.12.17","@babel/preset-typescript":"7.12.17","@leanup/cli-core-e2e":"^1.0.99","@leanup/cli-core-format":"^1.0.99","@leanup/cli-core-lint":"^1.0.99","@leanup/cli-core-test":"^1.0.99","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.8","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.1.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.99","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-OW71alrMu0wC1Ss6IOxvjex+Ze/QbmS+4/Q/4YsLqtYKIBO5FqRTL0w9grZY97FdX0zFH406TtgLwpx9c1jrMg==","shasum":"d88cf385e155314e226f0475e8956305c67b602f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.99.tgz","fileCount":62,"unpackedSize":151174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMOQGCRA9TVsSAnZWagAAP/YP/AjMrwnRTpazHIgGUX+g\nQL4w+s2U2eYdVHt/gAMdY2Ap7XYMT1mZ2Jq2dB90NqsV1/PZBZKvvgIKmi3x\nQKMUzz+PGdV1YmFcDdn6N3HoTIL2c80gh1szHINY3cWvT7MAEDJB+kgYnDOq\n5JikkiGMNdEYujdO4Eo9pBTAOaZYnnQYYZ9qjMccV9A4aRIunLbaCpiz9/20\nZDYR7jQvm+nzaZ43YFU9leDelRDE14NdAprKfRwuEvCARVk1d7z/GbHkkUdk\nBu6sCQs/qPtIXnct1R+6CZxuCXhSRr302A4gPLY2660ljLsDRClArkapcw89\nlqyg8zw20E41gq67dekvgntCjc3QSJyBSGZEBYizPdrseBYiKtdRXumShQGZ\noO3s5jr6HT80btaZyNVhh3xNQS2VLzk7N1d0yrCSNxyxIr0kLkvy1ZlOUkMR\njliWY0owlPsoJYKpEylHzQkLSbAMVx5J7uOqREwacHuq2oGVzwsj2DsojCZ7\nfIOLhMnHUOzHcnjiBYry52viz2ZtRrarX8fon9Pw9zhok6f+04j5vvayYoiX\nwME0B/NP+YnU2bFqWWKG6MabDorRZvZrqtsRTcFRzZrLWjd03Pq1jRqh2RYy\nDMoHnl8pRejUVBrNCLugy8QvZNcGJfCO3LZ5Ggt0ZaLGZctUaQn/dJkael0Y\nwGxU\r\n=RWF9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoHKheIQEIyyBjJMJyi4irX0jiEWBcJ3WrX3QW5ku5lQIgdyZw0J0hTSVyW+s0X7LA1FCKI1r1YVePR1DilGEdaMY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.99_1613816837981_0.5640681231164817"},"_hasShrinkwrap":false},"1.0.100":{"name":"@leanup/cli","version":"1.0.100","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.17","@babel/plugin-proposal-class-properties":"7.12.13","@babel/plugin-proposal-decorators":"7.12.13","@babel/plugin-proposal-optional-chaining":"7.12.17","@babel/preset-env":"7.12.17","@babel/preset-typescript":"7.12.17","@leanup/cli-core-e2e":"^1.0.100","@leanup/cli-core-format":"^1.0.100","@leanup/cli-core-lint":"^1.0.100","@leanup/cli-core-test":"^1.0.100","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.8","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.1.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.100","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-lAeS0J6AHYvScX0pcPvch+uF7RtZPQFeTSr64qLM71zHESQVHr89GJ6yhDEAWp4N42cqmEw/2a0SAtF6fTv8nA==","shasum":"fa0d25a845d490497f847583a3eca18b5f81a159","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.100.tgz","fileCount":62,"unpackedSize":151179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMO3GCRA9TVsSAnZWagAAflsP/RwOlefZm4f2LoDzhzE2\nMU3+QV21ZS8QAEn8TMOBnx2Acy4UDzvH+LrhP0L8XorY18C0v++owrfshBkB\neetUzarRSRZvfxwZ0UkcSNTttwRSGYQFQ4BDhhtGe3fmX6aELzjwMzcZVUoX\nMRNcVoktZGJhTNIrZBgERW5j4tAMJzJjsTlPKA9j9USLFLYc41LxsKRkLDAI\n5xNWAa++WWGBBO0eAoYKBs66BFZAucl5h2xSmkXJnGS6cCp23KbSx+NIJyvf\n7gPuZR49F1NK0L67YRZc6ljQBxJ6adSYP1aqFoQlNdi5k7NmBVF05g6/twcO\n/YTWrED4cqHJHYWG8GUtVj5ADzg8TNLEsqT+GaXGxmA7w6Wadv4cm6yZtgOQ\n0zAHFMB6fpq8pohLJ/6I4d83DOzq7Au0Eg/gNB9T9Kq2QqRV/r7U6cEAOWhS\n0iw7HDcqtF9vTqZXftxsiRUhnjsl1coitpECkD2wAbqya9FbpClSLBEhzdLo\n7cEdjM3gxLrSpzEmUnF5Rt04UM/OSuxYPGyOpfizAImztu12wchZ0UnTOPbM\n7Yw+KFnjSRInbSjd9PyOezCqmbqPMVUgL2VuaTUwZIO/c8pv/2dO8gj45uWm\nR3DxmBuKgFMBlZO5DW0pxXJDgrt0jFn34MPMTsG/8GEcjr92g+tm3ctoOSOp\n+kJS\r\n=wcEv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChqmHXtJYLjK/xbjCejda/khCZUr9ZUPwrvcat3QeLlwIgaWtkxplzyqdD1DqKSQtWiWR4N5v6edugieSx5ueJNPM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.100_1613819334370_0.3876448513701418"},"_hasShrinkwrap":false},"1.0.101":{"name":"@leanup/cli","version":"1.0.101","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.17","@babel/plugin-proposal-class-properties":"7.12.13","@babel/plugin-proposal-decorators":"7.12.13","@babel/plugin-proposal-optional-chaining":"7.12.17","@babel/preset-env":"7.12.17","@babel/preset-typescript":"7.12.17","@leanup/cli-core-e2e":"^1.0.100","@leanup/cli-core-format":"^1.0.100","@leanup/cli-core-lint":"^1.0.100","@leanup/cli-core-test":"^1.0.100","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.8","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.1.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.101","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-siSlI/fpazTZxL+zjlqnJmqa+zpoaFtAYcwsTI8o1llSyjGFj02mF9yY5rGsOJNbtolDEOaTw/0u8D1bxKnyaA==","shasum":"4bb59a0e41320019dbc16777272ad635db9fc0a5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.101.tgz","fileCount":64,"unpackedSize":151986,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMPZpCRA9TVsSAnZWagAAcZYP/jZNc2a8ETF5mj4bDGFV\n5ESHNxiMdJUZBZjfqQJxSxHPWkTS7Siw+rbL58XC47hYzBqi5uslh9RPdbOo\nIqFQQui/rzsmC8VmlzrAcNtlbaERSA0w/ZNWnAy2wtg9fU/MbQ/yes1CrifF\n9/ezXuV5A7+0S6DACbLfwOId/aWuwNm/ELzz95eEiAUY+lCyeAW3VljUftAg\nXt3hQwlqMvawc/D+ZhhKbhQsYUjQvqdMPQg8Q/Zuf4ZrlJAaSqG1ijyHosBu\nQJh6YsFESHEmlydQy6CcCTrFed7Ruq2kU6YY8XC0PPpa2PJKZAeKOlhE1WdG\n8ENRvW+Y2oLsDXCkAvaADtLdXkHwcQcJq6sR2naziu41JhEkVB0A2hueEgWa\nHbEBP8Ao/+b4J7F+M1rgkH/0vFYi4NhZ2bTjKvwbIyuM7zcCum/80wb5+L6A\n9engdZvmNTS1iw18uzZel0y68Fy26NlKY9Y8OmHS0hm6AcoWsU85kiKnXvH7\nCVE5l+uygbg2apLq1/vBZqbJsu5gi6gJ/zCeuT77Y9TPXqJRiiX4E1yFOWcf\nU4AYyZzO8oHiQUo/FpRA/RSP7VJVCag64YfV9BkZLn322ne1MjVX8ZGLadfs\nlz2Br45KEGBwKxYzwXpa3UB1ne4EovQoxB+Lf73ZioP4iY5cKZo9NGXVTOer\npHqY\r\n=0ZZ2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEnIYSJhqX7T5iWnhY1wSfjBbcPw8oc08pD0aX2XYi5LAiBF1QR3bNots3m0hTA3gVyoKTEzbgz+I5tRGsqAI7wavA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.101_1613821545069_0.4622355699635774"},"_hasShrinkwrap":false},"1.1.0-rc.297":{"name":"@leanup/cli","version":"1.1.0-rc.297","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.297","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Qx/ujwcid5lcDYzg7TMsVWzBX2Ot8cMVG9gQiwI/zHm68aP2Z0JoUXH9wb8hWyD6QCD1SweexL7PFI3ci66Axg==","shasum":"da5effd90bce0acfd63509e617b0577bb5e01736","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.297.tgz","fileCount":67,"unpackedSize":141148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMQjhCRA9TVsSAnZWagAAqowP/RT7GsV5kTYbLXwE4MGV\nAlLVaoggSe3VsHJx0RnTEl6N+FtKyJLrWvmGK6evSTDu480U25Z7pAfJPg1R\nSLOH0sEYMl291yxc9pzK4dMSTaMEEBGmiYUI0TMWhSAn6XyTrtdq38X5rw2t\n8B7donc4yQ7Tsd1SRHfEK+Y/kYoZNlPbuPpxDOuEtap0mJ/EXCrTW0mDbyOE\nCUQmCo8EYZweMFQwtf2+X7Rfp/GTTjB0KoDMjvx1CuAx+xYDcLY0LobuD6VU\n32VGU5g9I53XBayOyFKrDkJ/fPvM5dGxpk/vd9OHmcA7TxY/+bl9Glb+khk8\n23DAtmSZGrxA4gdSt0Z7dSarmdVGLWGlP1LcqD9luWmh01lEU4ML4hwKPtwY\nVLu66GOHfOj/A4CEh7hqv0VFiuFj8TQU9QYsELWh7jg9ueyI5Czf9jsGJbtF\nDTeOK5kEhW9Vhso28wLArgTPK3v+nuXyHPzq4VGtzew4NYbpVeS+eHB5dJ/J\nNsMSZlbvUWvRP7oZbg5FSQ+f7L5zwchJfOHaO5jQmJIZeZ10OM4c1bmwZZFA\njbQzuofJDuxeW11nDQw8P1U2wfYfFpJ+4OdmIvZLxD1o53syPVLzXl+JQk7C\nwGBaeWf2JAeHuhVL7IrEOiYRaRyXE4v2kymfuBOn6bLampRWfvMkoCDH4cEH\nCHbF\r\n=hdwL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwfBZbkaGNm+5YMvPgZ+3TfWIOTVmlo16RnW26dzImFQIgXbXyeM4iyUurazWdXIgfbY+iUhVBWb5/VfYrVY61/90="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.297_1613826272879_0.7739946107971944"},"_hasShrinkwrap":false},"1.1.0-rc.298":{"name":"@leanup/cli","version":"1.1.0-rc.298","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.298","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-v6rToL6azaO7cKyevim1R5bSp9/DEympxyflk7M/O8R8pIJi8u3Ud4ePWwpwMEattICWhwZZHmetGsSZPgzbzg==","shasum":"8998a3221beede228e9693cf8e1410c98e285366","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.298.tgz","fileCount":67,"unpackedSize":141156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMRcwCRA9TVsSAnZWagAABUIP/2dEjcpzwrW23Vsc2a1v\n4SDPQgaY/9eN5NSf5xCpqJByKrtGE6NOUGQytFHF1SaCYvI2bvLQuqgzWfdh\nZZUPAnwcd/bNiedq74MCHXMYNcMnNUU8M8jBfTpVwMpg5PwVT84XHv0gC9Rm\nazfkpBLlGv+xKawJO/RxF60hnMTzlvWqyubMxb1Y5AKj+s75DScjcCpuvMIk\n4hRCPyFaWWWI2vDZ+PBC80v/JnsOUSIUN7KyuGXxBHlTCkJdE2SL2KQ8An+/\nYWNYku2oMyTO+JaJpk9+VllBTtMU1swkNh+7xvxZtGLm58OxBV8T8+Dwyws1\numy+Cx2vjfNfFrykLjHnBU4DpgD0QnlfiYBqD5LLZNKoMEfE26c7r2nj9eTN\nsqsePJQ3fUHYTLck74knAVUn1HxNGPYePmG5UJI7eiyx5o0gTmy+yJ2tYHCe\noLFqm0h2SsqUMDEO3ST5C51G5VbBQJjUWQ6yZY86KoxjizC309yCpyW2DGer\nsCJYCLxkVKgAcTyqe+d6cigTqiST+p3o40tx0nNMLNcvZUrEvoynuVHdv9dJ\nP64O9jKcaprpEXSaM54mbsfrvAOwE2AwUxN1myEp477figxKPSqSTCwtZhQE\nXyryZHCWHZFTvO57wPMqJXaO1z4bJ3ZQ+FYhlSll0CMR6CH2on3exzx4jTGj\ntmTM\r\n=Nsy+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpzBnqLC1tEB5rhVElsCK2p5jtEWG6DC5omwdLnPsqUAIhAJ5yAo2zIRwDXOTpFqZFHbaYfrno6k67pjsU5GVuZwgH"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.298_1613829935660_0.42616457664872787"},"_hasShrinkwrap":false},"1.1.0-rc.299":{"name":"@leanup/cli","version":"1.1.0-rc.299","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.299","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bv6m+mOc2yc0jmRovh6y514DbUCACacsRlEZv0uAtMNU617qsoEK6JhIlqPSzLnUfW2rWUtZsZRcBAyHe+66zg==","shasum":"93659f4c95bd72747cd98528058cd1ca3c81cf89","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.299.tgz","fileCount":67,"unpackedSize":141156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMR8NCRA9TVsSAnZWagAAxDwQAIggFMS/nKZxFXSQ5bpS\nlAbd9zjmfjOL0wCHrn9qwjlR7dqhTI5Kd+IUTuY+gkMQX/MGU4l4wWWqexTY\nvdVc7TU94gF5+uC0ga4W7WOhrwWiGAUjJwDKo1/GLzuynXNW7SBitHC2BqCn\nKsglQAXDxSdzE80jWwN3klnfl7MLoMcWHir8k5/vjcN8P/EgWo7tJfA+ofXY\n25mCf3xkXCELig1fHZe+SwVavo5uEbGo+QUfPQik3IiOTo43QmAs+ieOISG5\noxta/I2KFfFuiGi76TPTmEcESmJQWzs4l6uZRfq/wBL12ffcyuJvyrRj/yHO\nrUQBCsGk7huDt+BEO+zVS1s+ys8WoSTIx4lyYYP00WZdAyxJZOCeDF+pADc3\nfoGCwQvbVyWtHDIG9Dwb1Gdp6eXtz7ZNgMJaeRsR/8YbQ93yhNsgpa7rNWe3\nYZo0tDrgJP6M3sFOv8qcaR9Dhj+hh5Fqth3hAmYs90CFCN+dYso0w4suJFI9\n6wbG2iln1u0bm5HdgzikHgNJ3YTSd+tNQmJeOuVm9zcmA2Oy3tv5ekN265x8\nnny3P54dqlQqM/gZ/yUawCn+FWjlKTpG1yiPBK+23J+dzAXxiRJ1sYpcBD3C\nAG12VCussGNRl9Zl3hK6XEirsv7hyO/9YJWAgaap84zh0yu5K9lNzimivG48\nLMdQ\r\n=Rfzo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhW2jGdN5Dri+OtdhOGxb1pdbPZBUrDbYRVdBCcmVsRQIge04t00Ot6iSXu621TiFkW6uqj1EO6mmgIUhU8cjK92A="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.299_1613831949290_0.25452524881881367"},"_hasShrinkwrap":false},"1.0.102":{"name":"@leanup/cli","version":"1.0.102","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.12.17","@babel/plugin-proposal-class-properties":"7.12.13","@babel/plugin-proposal-decorators":"7.12.13","@babel/plugin-proposal-optional-chaining":"7.12.17","@babel/preset-env":"7.12.17","@babel/preset-typescript":"7.12.17","@leanup/cli-core-e2e":"^1.0.102","@leanup/cli-core-format":"^1.0.102","@leanup/cli-core-lint":"^1.0.102","@leanup/cli-core-test":"^1.0.102","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.8","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.1.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.102","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-v+2gtANkckYIA0ykvX/XIQtw+IbJNZMznK2AdZwdiSgosytqRxVUj4+F/RU6DKPqBCOsk6ic7KOFLwwx6wbVgg==","shasum":"f8db5202fb077c7d75e5632d4e4bc7d416e7085a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.102.tgz","fileCount":64,"unpackedSize":152182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMe4sCRA9TVsSAnZWagAAq44P/R5NchHqlmvT7FM+aa+M\nte7hhYw1fy2yrVIppnkxEN16UzOCVV4bcxxnDWjF2wycVSU88+FiC7lFGloL\ndnupfqePYFPJ2uM/VpDT9sG+69MWGgZ4rxAVQJ2dj1taJQV1PZgn/xTmKlpk\nO62egQhYg3WpSjXrucXT3tew0RIFthKed33oonvi80aiVbh2AwZH2y4sjF3U\nlr/rxE++8uZGWPg4aQ3no7H4CflqnuDLi9KhP7uvcHYopDPG1f03VZsKdS3L\nWmbd80OQTa/yu1NCiLfC6PK3ubGHBx4x0lFgTtBuELIv/KzViB5wzlXDzqc3\nFtjRLP7uBUjG/jlOt2H67ibvcQ09IH+2MS332jDnCGmRJ0Dykib/ywF/ajpr\nBQ13ttBdkJNTh1eZa6d7bviQPWSv5w7zrNxFNfylG28+BZyQ7shTcF75xbyJ\nOfBVR2UMClEzz1cEXl/RrmoK7pe1OyIS1rN2Ke887Ym5RjBai8zDnFlD8YQY\nOMqRMmrOpFGpUDUEePt4pDx8oKwcTkFjSOeiKr31R3jP0DTvcuNJwjecpazU\nf6SovdeQHAARTJlly/y+Wt915qgHHs8yn6pOp0iadFeMTp3xUNFrJBoiPxIN\nhDCdiiye+lcdBYhI43Hnfae71Ool4JVEZd4lTruKoPFq2aCcbUJgpw2EuP84\nWjD0\r\n=ohOX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDt5x8LVfLq1gFawZeq1UWnzYIJFduimmyp8XeoZeKTWAIhANSnZ11EguBoqRi2guAzXmivd49x1sp6f8JIrMLJtsUL"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.102_1613884972121_0.6250174738910623"},"_hasShrinkwrap":false},"1.1.0-rc.301":{"name":"@leanup/cli","version":"1.1.0-rc.301","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.1.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.301","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-qyWrjtET50xkh0JWdXACeYDb6g5NH6AuX+ImD61ADO4yABQNYq9sjex2dOgRbDH1BS2+f3tV5LdWZ6chqNRnzw==","shasum":"50855016eaaad59a8175d38ab6d43cd6eb737849","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.301.tgz","fileCount":67,"unpackedSize":141156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNQX9CRA9TVsSAnZWagAAg6wP/1jauJFtu11Hqs7W32AY\nFcBVRk+zpSoSSos1Uk+G6ZCPIKF6/8yWIwtyn/e+HBXVBnyMihqyVP4MMOVc\n3cddOEsdnwaPjQKfPNiCo+wURu/H94JSMj4rW5RaDfD0D4lvLs1qAunsPpja\nwqcW9tW8ejKSWVpKKF9Om61MxFCAdvfhqyM238KkBEre5MRS0Ji1K2zduJA7\npFI18Pn6CnyRTfhpwbzo+7NcpAixSUUSWEvugrMi6q6b5xXDzgQBJGgeWEd4\nKYyJpOENT46pCriBugj4N1jfI2kUrbuPZXI4QKNjpzIS+DqZammP6A1o3Pui\nA8T597KdwH2zLy9/DV6YRUz644cVYs8DowiST/Hi+HKJr6S7gbtSLNLopqul\nS5WW+IVbKcDY/49cPuVnwrUQOqG31FyvX/SodXU5DcaUFbW+2QxEMQKhtklu\nDg/LZ/+NcuNWLCzQO9f+qThrMQvqlK38z7gUaOVLnyeVD1P2td+it+mbHTVc\nw2yMspuUdtcn1n06YvlTXWUij5IbOE6MBIwv1lhCpFAZWjDlKLWB3JEzCWmX\n99yv9c3Mt3yrGOAbQLKKGFl4XTkg2pSlQNB6mnedk4YVKWXUeOxtpwIK4jTp\nxmnUcGnICze3NbWRJUebzmnPErPz9fQwsXb71SopZP3KIcT8GbIAHBWshV7c\nAXSi\r\n=Ss7t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBdICiub66Qsq6UwE/nn3/Li1MET4P8RiZcJp/mkppT3AiBaE355lzM+LdtXe08KBX8dNDeNcU96/Hxr5RGPqLyxLQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.301_1614087676377_0.2295161054310939"},"_hasShrinkwrap":false},"1.0.103":{"name":"@leanup/cli","version":"1.0.103","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.1","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.0","@babel/plugin-proposal-optional-chaining":"7.13.0","@babel/preset-env":"7.13.0","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.103","@leanup/cli-core-format":"^1.0.103","@leanup/cli-core-lint":"^1.0.103","@leanup/cli-core-test":"^1.0.103","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.8","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"3.0.1","style-loader":"2.0.0","webpack":"5.24.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.1.5"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.103","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-aKE+gy1fcwphJejGuh5s71BPhgDGWOZaOHBMu5KFxqah2uQDruEe/4XNFLGRe7FDRGMDHZO/r0U3bvgfgCPwFA==","shasum":"4c2c9f767d727a1b77b42e579d6398e4e460d4c7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.103.tgz","fileCount":64,"unpackedSize":152176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNchZCRA9TVsSAnZWagAABTYQAJn98zSg/UT1z8h3qG8V\n6fsBObZpEezkCY6fdsC7D0HCDJnY4UzXSmaHfz+9UhkFHRaKqw6mTMiHaYOt\n2Bzh5jQMdaFrZ3qJ9oVvOiRM+jPxghiXIoVpulIUhFMfhsBRhlnIy8tsaDGR\nErusWyzRFi/Oi02mGAfK2nUAl5rfitG9Hj/fyHf2ZjHP/wJ05VfaPk/bZpFO\nS6bqv3eDq2RrNgOrFhlr0Q5JswzKDDyggds+2PmAdBGGMa1yMdR4wLcfveYo\nwce1vFfLplegJE3pcjOCwdFz0Tqn3T9s6k190JO1Sf+KEqEikff4muremg0W\ncbYMKzHkmQEG09FKFXDAFm4CqQs/7nGtci/aXYgV66idsF354y5JmrxPREbV\ndQsGhvu+TnZ4DZcYdLVQbBRN2Mtnqzx0jk3cDL+jPW19tXCR9Q0i524/QsSr\nJFseZCDdqmnlAoeUDNKLY2d/yON5pWa7dYu6h6m9LANKZ65IaTvVjHMgnl2e\ny14KoP7FVa6XqOt6MfCmOUPnK2nNV8NgpLDlk712hZXM+XgsyJ1hXJf5Ev3X\n8UtpgBqWr6KtTUOs3QoJSO46xHFL/U4I1nezBq8HscQEfZRe1kZPO8TMJcE2\nuEEfvd8T2e3/lkSvtuSWbTJbnESViXS8T5i+heEt2STb3DOAI37KPRQn8AFt\nGEMe\r\n=g0s5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBTPRmjiH8XKnQu2kBTraayLaRz2V4d0mqXdQv9Aag1FAiEAjw3RPAQwEGZ0pQ6r+xwQuN7/MY610flN+ChZ/2i8/0E="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.103_1614137433311_0.9968786548170037"},"_hasShrinkwrap":false},"1.1.0-rc.302":{"name":"@leanup/cli","version":"1.1.0-rc.302","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.2.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.302","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-XakliyEhV+D2+vhcGEBIyWg+J+KSgOzDMHTwsfV/pSytxhSoWD80Dso/aXhwWxdf/n6nvcv5Oywxep1JbMVZTw==","shasum":"c8139769a49c77b5d4af66cb6d177e801b95f8f7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.302.tgz","fileCount":70,"unpackedSize":142496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNdlcCRA9TVsSAnZWagAAlsMP/1KK4dcpo84ECwuOnG3B\nzVyeQPJozVzvYfjIlxPFhzen9N7+q1iSp80kUklEvKNke3BSbt9N0qGbq3LJ\ndNf8MD/YvYXp4lu6S43nojJEVjWKmbEg2jOfmU775K4Dc90QsOO5V97HfqGh\nPMX/Khjl/DyEiQaJEUBnirn7D/LtuwOb3hOG4K1XDSMJ3rEPc/h825pt1Qde\neqejFkGjVQYfK+NgUlgKFZnX36vTjGqSLTqPfGMO4fz87C/iK96V66dkfu9o\nGmF7eujv2j9ZEzrs4R/28FLCvrjdc/hgLg0htOQyB6l3sGz4sBSL8NK4flds\n63T5TUzF7LVM6dxGMht6qqehp+wDreGL1gaNgpOnrN0bhL0TE/KR7nP+fk0a\nz7NZ8YAUaLZSbqSmy+uk0kylb6XNjSw4M/3k+6zO00IrO4XhDe2S0/3Yuxc0\nYx65P0A9jc+RDY6txkc9iLEUKk1bmGlWpKaqxuDB10GvMk7XOxrntBL7xHBH\ni92QERb8vfNLpJlOWmW9AUa0aA9EsORIFoNqgPqWbCc/Z3B0xWi5SasNS7cZ\nGA6xyvoeMXi6HraFApnr3x2znP+yeAGowoQogdpY502teQzLsjgscUXtEKEa\n7fY4yuJSic3oMOFWS4rqLBuoWkmRj4Q16+8cSItzxSdxWNfIakrtQY65ERpR\n+u4F\r\n=eezm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICrjRPX25+B2yTF4gF7RSPlwNWSFapiiz6iot6NtvQoRAiEA8x+w/LXlcv81sacHNHLoTc8jhtEfon73cMpAy7wtUUI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.302_1614141788112_0.34956480787529265"},"_hasShrinkwrap":false},"1.0.104":{"name":"@leanup/cli","version":"1.0.104","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.1","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.0","@babel/preset-env":"7.13.5","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.104","@leanup/cli-core-format":"^1.0.104","@leanup/cli-core-lint":"^1.0.104","@leanup/cli-core-test":"^1.0.104","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.8","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.2.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.104","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZTi/sWkL8dKt+okEY6JGEm+ZfWFXBh1TUv3Ws98AeKjtzTVPNE/7kEQlOvxx5L8rqoTHczat8WWALBoXQu3H2w==","shasum":"c88a4037e971b896d54c6fc953f422e1c2ff16bd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.104.tgz","fileCount":64,"unpackedSize":152191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNgpQCRA9TVsSAnZWagAAb0cP/jLEdau88BJGDysg2hKe\nKNGp5j23ExyLFAFbdB2ateZXrVVAw4L82zYgR6q46ox6SukDD2OvOAjpUW3x\n+u7OHRBPYoCkTyLZthnTUVJHDnSWxqxANjAgTaZhCCM4/u6Glh3P5AXZ0gJT\nAcHac4LfMx6YUkJXfj8+KKOE8FIDQsU6y60qPKcLoMKFkC5TpMzV8XdxW0wb\nGFMw6xyJjGE+R6fuLJ2qYz3eb25O8hS4X3QAa4FqorSnzpwDDTuRJwclMVtR\nNx9u91dr1saP0NX1iiNJ4qPFtXrtz8+3Gu5m/7am4trbdynuGPjEqbwj2JaG\nFcJy5YiCIxdO2ghh+9a3lnUAkqVSh6gFbVOctdIBIKw4ZrVUbiA/sPw/q1Ix\nBABLakOwefYfaGZIEq9yv2gt7JSlUGyKBVDCOOUYGpBFitZnydAKqqMyBw4+\nWxs/Bs7TW3Ofgm2h5VJBTJhwfIlNHw+00dfKU/8SSC/VcosgrU3byaRjjHif\nsse4UFJW2WdxMIos7mftUj+wtIrFY7xt5qroVaSaiyeKkz8LakQMMA/Dm2TW\n0BwKTo4VJccJV7RkFKmyVkS5fmzJfdPRW8ujhB8l9Rg/HspowqgWACmqm5gM\nGHerw/gnMMgtc0TZuD4R7LnXgYsVHnBFFmusUMZSlN3mbgTdeqxie7sPZsOV\n1IoG\r\n=Y1cT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBOc4spRJ5JORnUuDJWHjq/9Zw9JVV8LlAFIZDgaByrUAiEAmDNvCo/tzMVFPnsYmTqmOQzPTO2VeLyxpNEM/Ukt5eA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.104_1614154319664_0.1260129823058198"},"_hasShrinkwrap":false},"1.1.0-rc.303":{"name":"@leanup/cli","version":"1.1.0-rc.303","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache 2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.2.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.303","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-N1icHkgit2D+4lt1jSxIOeGJgu8Ak7ZxESwNVUmuzd/2V7lRoMctSO6X0dTyF9kRfS63pFM0WZlkzvIP7q7EIQ==","shasum":"01ab5219a8532d1b484105aad5ac764820616aa2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.303.tgz","fileCount":70,"unpackedSize":142496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNjf5CRA9TVsSAnZWagAA7lsQAJgkFGK9RXorZC7WxVi9\ntW4zFRhKLKLWVBl1KZ4fwCyJlun/PJVcLVt6VyshBTfloExMyD+uGFx1A36g\nuTGmNyKFEpWcmnAlNgTA58hYPKxwZ4SBwwSrqcj628s+btAtL9iUMBs/dSDb\n0OEDzGodsWMgfBsvD2//NwrGa3Y1u4hv/GTQkswuH+dAwlgRxwgdvOurwDbo\n32Qd2k9AuE0c8+XIHL/poN4d/gmUq87W0OR2BcBBpMoKmmslhvBC9yFGF6mW\n1C0uNe8KPv/HigrRz0rdk/atsoCm5AWQKXKnPkm/pGaQ4h3+zZL33nNmLsf2\nsh/MB7t2E89x1oQDPzoC8TkrVI5nEoqqIzB8bcklW8UZuabL/ylrd7XLuBiw\nNpKqvi7uH6s+pfgEPKCJW+Tn6bf+G+T7beZZwZhJuWABQSiGuK1w7xaurJa1\nhiYpSOlpIDs0N8BXLg395RLK8U5cguwaz954i9ocMsKvLvOaq7q/cHsalOt2\nGzhRTcB2ffn3Nb7+09POw1iZZcgl9tdYvs96DHqxnrSMUbn0g9HSNzIyc5yJ\ngJQ5KwvQTLdQsm3bXwHFsYO10u6GXWF1UuDatT44hFNKhRDSNEG7w4gSd6t+\neMD1onuFtPcFKdcupzyt7YPmikO3YUcHPoULSzd/kFD/DJpQhp+a5nv5AHIJ\nmqah\r\n=WZEh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEKLASLsgq62adlWcIHL90qylrwLPotP1TH84qtHQXBQIhAK34X2g9qvU6FpItnHsjifvZ3nDdh2NrVVCNPI95HpeC"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.303_1614166009294_0.7132774543667306"},"_hasShrinkwrap":false},"1.1.0-rc.304":{"name":"@leanup/cli","version":"1.1.0-rc.304","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.2.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.304","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-1v3dhYJZiVlxa1E4Bww62K5d2k1jFx+n2uNNHCFB1gN+rNgS0oiNw25qIab+7V3wOinMvwmQJtW/f36J5WjleQ==","shasum":"362e705c28fea4d72f9379aaf08e0401be45e30b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.304.tgz","fileCount":70,"unpackedSize":142496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN0xjCRA9TVsSAnZWagAAqOYQAKDVO9689pi0JMTLAoIy\ndlNnsAO0AWgCnsxRBYaIDKy6kmSBJGQS9Z2xhxJKZw86TWrxqcmRQ2KYXWRR\niBIGdPc8E01T7GWkRSDtpZrKY0xO+gwYzHGrwhm/ARc+wSp3O5SOomJ2hbdM\nsmcN0WCbHWGJqrw3n7UWj3LorWECdrXyZYiGD7JAt7+uUr9kLlqjq1pPQvNu\n1+nDjrJ5z94EXQ5ZwW/49XvzxKeWG+hoERAfH/3ukt5jJ5ZmPAHZihbL1M6u\n9eCWZu3fdyPhqJQhY/CMKHL6gfaa0TMGrCn3G1C7ojj0BlXun7OUSO3dk0Rh\nScdifNvXhIx2t8mSNV2ecSyg4HPBV7ofMMY222kr0Z4xah3yBrr5bDasIvVa\nM1UfYzHrMXFWamSXiBJX/6rMlR8upKnWPPEZa7EGAlI8/9ch5oCVkaKuCh6W\nFSEegjypJ2rUSzTV6hjYHdM6T0WubvWMNJNwQdhW1wkE7/CgmtwzciN/AlXA\nDlISUZg2yVCfTtRu4EfqBI3nCoEVOgEy21L3wWrK3iSO2B0VhTALc9ezz7Tt\nXcYqV2hG5hgrJ3X5sVNrDyytt7doh0FAPCmDhtM32k0KA8IxVEt9Fw4rSV13\nVvT5tMeep+Rap4MIZ/Q7zzDXLD5bjHHJATU5iElKHcmOkqO7dWr4D8m6dTtO\n1dhx\r\n=1EF+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHAyfBeZ5NUPAIUIqR34JkyGuYUQy6heo/WRC8QG0cjAAiEA42Sbq7zAjxbLijNQhsimsShuqlxNkUh3bVY9DS4htN8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.304_1614236770645_0.36361802568705914"},"_hasShrinkwrap":false},"1.0.105":{"name":"@leanup/cli","version":"1.0.105","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.1","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.0","@babel/preset-env":"7.13.5","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.105","@leanup/cli-core-format":"^1.0.105","@leanup/cli-core-lint":"^1.0.105","@leanup/cli-core-test":"^1.0.105","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.0.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.8","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.2.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.105","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-87R5GVNf1N+Wg586PvcpGKza/HnmpZzyiBQkNuP/TvA08MNm70/VsEtXhCj70+Af7U2mSvMwST+ckTKuwJYxIw==","shasum":"7cfb8ee45fe30b585184fd9c1a1e1aab391b202b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.105.tgz","fileCount":64,"unpackedSize":152191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN11LCRA9TVsSAnZWagAAau0P/2PwyVukiaUgkAQCP0Kg\nQqXpemditC8dnE+6jhZOI/zkYWYHF2KW2U5jSvnRrpgagu+c31KChZ2S+OCf\nz2ISKMdSJztZ1ADc2gLCoJ4UtCk2l7sVT+GD1YijzOeSFYeDXrUsQ6BnsNq1\nYKEZS9g2ol+oYWl2h8HaDnUPrf26Vh5NKIf/RGTclGxaw1d9XoVytPxjDsGA\n5OtjevCHzM5rksyTmToOT9RD/OZpbBq0SnWPKrqUetakn0M0E6IZn4nIOAPW\nRJToVdaZKv12J2p7Np62GNfCeYxbBcc8NGBHhehVChX1gGDpMvy1wjp2JnNi\nypwfxSGAmdFFKMzk0HK5XmImvRfLhpApMyVog7onsrLMYXNwb+/Ht7quJKIZ\nMz4de/vDG0v6at8gcCp2UPL+qr8ahj4nY1ut9Wp4MxWtFkP4rwtcbtFG5DVi\nBM9FZdHODBr/V3zx7cjSYPCop2CrzeBp/BO/UfUyal0raz7G918GAp+T4sO/\n+JaFQzsN2DaPQZPm73SXMavSq3BkOPKLpt7ctHJ1QpwiFT1rEibiaN2q1EDa\nrVamdeEwfOhoI89s18mtXGnN0infSE3kUdYw/jx3Xhgv8Nmr/EvtE0EWKZ4H\npG6gNIjSChMSk67lxGu+/wgnTLgHdFosRFjmebXw/CrPyDJD3NH/XeSYU8Gh\neRLi\r\n=tIDa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeNrOeSz5EhXlCtT0u5JQhE48LbdMzwQnorSR3sWXUWAIgPWnC5wJnNiXXbSARPPyKIWdpcC/taNFtb8B4mUqcgOc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.105_1614241098170_0.13002070085046147"},"_hasShrinkwrap":false},"1.1.0-rc.305":{"name":"@leanup/cli","version":"1.1.0-rc.305","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.1","tsc":"1.20150623.0","typescript":"4.2.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.305","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-U1JSpV+1xT+wZqksN7QjMwaltsfOO5zzSqLK/yJM3m6DSjDp3slcz+QdR9/y4HQf+/rhW1cRqNdspXLnErJuEw==","shasum":"d944818a545d92e8a6f10c419220de9b202f69f3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.305.tgz","fileCount":70,"unpackedSize":142495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPIYkCRA9TVsSAnZWagAAig0P/jQANUtRecxAuIYOoCIh\nA38VoKtmsrMJpchSRcjYmWuMxWPcs8Wo6ULe7oh3AIdWWp6NUCRfotBlaxco\nbBleyIx/siOnKYYrnJL8gDr7VHCHShR4On3UzmFDDWqGaNW8gdiD42Qh4Idc\n/Yeyogs/0kBOZQEvBlMTayweaLLFHFzAGyvNzJp3t3gg0x76rAgnj2WxCj9O\n/HH+cNErfCuf8+cMf0f9f/0EpCeXyBcwfBeGw15gEiHQlWMXMsGxPhv3gm00\nsfkgMhAJXHKmbntqcdOh7tGvahrTJWR0faudXqH2KZNYymrqf0nSdIvGJ4tE\nL3HArW5/AyP6oX1OY1KoYmvjyJ00cqQmK37EuByfDg4VDlESNu+fgb08H3r8\nnpCyedpt1SG1Zt4sbTD9PZfDhCZwaPCifDDVhDSt6pED3AUKgKpAD+NQz4mb\nYwHVFigpZPGi30PrT8329pH8CkYvz4+9w0woIzYNEM6snUpkcs3WiJa818d9\n10LrxdmLVTEkU2pDMlXHy2RPTlwy/39V8VAJn8yA2+4LodaJV5ZV3XfuHSaw\ng0f56y/1ZapJLC3Psqab5tl2vT8xwl9HCnfxc0uDMGcCmgq4RUmhM+RBgGCC\nikbn0ToZgjZzczFDEhzBb/CJMq1qm3RW6wkV+pDEDf3PGH9Aja17EQC2ct8b\nfWTp\r\n=GleW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdczkbDZAlmsrBd2WIaMrBml2e4eAdKObN0tt9uIq7RAIhAP1B9/lBTCeK9tryqrp0sAr+8MXGn9Ep5NxHhBu3dMOv"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.305_1614579236045_0.858672206999803"},"_hasShrinkwrap":false},"1.0.106":{"name":"@leanup/cli","version":"1.0.106","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.8","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.8","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.106","@leanup/cli-core-format":"^1.0.106","@leanup/cli-core-lint":"^1.0.106","@leanup/cli-core-test":"^1.0.106","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.0","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.2.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.106","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-SjBc0U1s4Jh2AYyTaFGDrzkMQWkz30lu4kfoCDHjLNoBnIF0Nu5So0VKs9rEJU585IktpZByIpRAuUJfDim5Lg==","shasum":"b492ae1bd5fe63cb391fa18cfc28e5e2b6be01b9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.106.tgz","fileCount":64,"unpackedSize":152191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPI70CRA9TVsSAnZWagAARfAP/2Gj7pNVcU+ZkTUxecXE\nHEDSIs66hupKHQNBeqrDRE/7KUhiZ+F3n5FO3GUeGR9U1nZMm14D1UmglN0n\noWYrvX0aXBEGxmP45ih1uVDTAu1xYo0DBnftWOgueMdxmZwGN+VENliCmDTX\nAQOneIxT/yRTXoysIGRC8HBQ2pLcMbwfSLvG7P/pBj8VdxkCqDxpfsbNNgOp\nDsGQItJy5gTfD+uK/1STecPjRTwH3YJIJc5EVMXXJa82LupAJI6HGALaLIYB\ndCKXgQAAa55iBOkUptN7R6sqcCm0yKs1DU702d34d491JADkdhfmCjJ/CIc+\n6EqozHG9xkRRhqZHqxgAqQ8EH7ZR5YQS9gXuRoUL+dWfEdMusuFFYMKvXOCy\nRVRU6yZaa3b7kMhRlZ3oSL4E8lqDychKmlBTpCJ3p89UaA16QM8PABf0m66/\nJwSxvkpBXYifzcWcaSrFSnt5VlMFz8UqMGNNUB9hifgi1obLXeEfJgOy+Nsb\nzTnBOdd1N64I+O56uOub17swHyAKpr0LvR2oWPGyBRNv664FK4yCXQQIiYqG\nr98jwlmW+BHapoqRDvTk8CvKonmb49QfJgPmMveUTUKN8NP1M3aHozXxWz9d\nigQb/cCepIeRYFomITYT8nycm2owBQOztoExh4/QL7JcHYJyFpaaVJrqqyC0\nrCA/\r\n=7fdW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUDHshBWe1Ml6LT5WiN8ZJsoyhoucinU6/XVamSJHEgAIgG61eA46xr1G9Gayt5Vcsc45n3AFbeTgYz8ZcVlA3/x4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.106_1614581491921_0.9627604413429818"},"_hasShrinkwrap":false},"1.1.0-rc.306":{"name":"@leanup/cli","version":"1.1.0-rc.306","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.306","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-q+hKuFHlF4TiYXS+xrDr2xGp4X3proGyq9Hfp0uAFRa+VXq8u5MdThmJw3VdSphR5jID5Hgf0dJujBjc/z+ZZQ==","shasum":"35bce6875ad2af011f33eeba825a0d93446763e7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.306.tgz","fileCount":70,"unpackedSize":142485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPx91CRA9TVsSAnZWagAA4x8P/23CK+oThTFh1cdG3Zuz\n4nb/2f4l7veWlOfiaJHr8nZGKsvSqBIF7Hx65/hbsIu8i2xGKR3JVGKDA1fW\nCujg4g4eoPiq2dptz2oy4anubCczsn3DtWEsecaH4X67j6nO8zGvhLpCqFB+\nQMWZxbOYHfYAq3Jr/U7+cfq3PepQOTpHLJ+Htg3Hz2kavb2gWQRNu+kGJ0BZ\ncDAi7W1q1FGUxGjDPHErITbGNkN9Kd8aj3GVGMhKW96pKB2tLKQ+Cmx6bHyP\nMFyesMLWrHtarFFGt9jNXm1GiAm1cW9h2olWE0UWpcyba9BJkAfQ3v0r88We\n9nIUMmX07lSP16fllS4tVaYNN1VehogAmiZRpfzFajFBoPZl/Xza4qugKQDj\nd/T+gjZumqp/QLqwSrxn1NmYEp4dBkD99ZSYnqjS3DXrGg64iiFeYXcU4xQM\ncuX3Nm5afnujbdtoC0NSrVr9Nm0qRpMhdMVJa6Kc7SzBeQFyyRlDgtHLPhSV\nE6LaH+qo2ocktse9m2i5bRZskZT+vIO7ObPkjvgto6/beTBYUa9aQOhG5L7o\nlJhkNw8QLpyI5P/HOPm6lsqbv+DGDXqBwrBkZDRDMNWyEMCktnrGvCvsbKKh\nRTFWil0LkzL9DgvllINxSuGjvTyhs3ZYHNEQpKpvq9gws2Es8AXDHJ28pzF7\nIcwH\r\n=JjaL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+5uUhPMfToLzp+0fNOHIeIgXJx9g7lxNYWQd8jJrnYQIhAPE8FiR4VhA1J2XpABdOP2tnGSzmSyhsD+Qt/g3FAVio"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.306_1614749557104_0.7986563476790354"},"_hasShrinkwrap":false},"1.0.107":{"name":"@leanup/cli","version":"1.0.107","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.8","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.9","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.106","@leanup/cli-core-format":"^1.0.106","@leanup/cli-core-lint":"^1.0.107","@leanup/cli-core-test":"^1.0.107","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.6","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.2.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.107","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-p5JAvndrzlkwlWSdFSrXeyr/bj+8GgJXXxTw3hg1LefcAnBzIeGX5AHiv+sqm6FMoNeUe/vFaTyo2RHdXq1EDA==","shasum":"976b6ba1d9994c6bcd0b23da19f4884070b1f31d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.107.tgz","fileCount":64,"unpackedSize":152206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPydACRA9TVsSAnZWagAAL8EP/0J4q5OaE+Ms7oxuBtp3\nesrB4J/Pqgox2Rm1myinWDAFSyK+KjQVhSw7MNQKV7opZdO8tCMFGgIFyWUJ\npcFRVAR8wGmhYBb9V8HHnZtvWY37WsUPbw6uJiHOEjIdgH20S9mKevMNSw9x\nefqTfV/AqOJfwlRVM7cSlqZpUsOgpsmwcsWYmNtmLUmX5ioExyGG2DnbDump\nWB2kdkteCeA/JPx5TIO2d5QojyFeWaOSE0iY1D3L2W8lHUrHrKlVXktIMQt/\n+XQF4f4OBGffhwqsrbWAVFWbo2Xyd11r0O1P5r+R+CrWyAYmYFZUICBiah4p\n32/LABQmvggI1e5vJKfwE0eba8zoHRcuIvbr8sXWQAWYOIIS9UR5M9kslQLh\nB8kaaF60L5QMnBx27f5Q6OoujKkRAn9nf9oxXesE3msDrOwYq76HXVUJNblw\nWAwxEI67rY8ezY0CAURm5z2WzC7i9rBvET8A09u5nYhx/NaA5meehxrqx1W8\n4BdXzPoe9sXMyOGCVIrEwLl/Se4XmhHe3sUS2rGe4YAu2Kg6vPudvBBaYgf8\ny6guV1WHyjH0XvSGJX80SX3Jo5QQhp7ngH7tqd0g4H6HMv5xpZKG5pY6fq4f\nUFGRGjcgvbIORTmQF4LdNY6nvWQ326OUv9VsF7jONWNBQPoUjWIULMMj1Tle\n8Lb0\r\n=E5CQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAGtqSKkjA9Ny2YhoGZcWiy22+ekvLpVCXYWSPuIkmDUAiEAi1wePvdmr6ubTdkZW2juCLD9gP1Mlyb5sS5jeoM0kUM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.107_1614751551905_0.7306023473570624"},"_hasShrinkwrap":false},"1.1.0-rc.307":{"name":"@leanup/cli","version":"1.1.0-rc.307","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.307","_nodeVersion":"14.15.5","_npmVersion":"6.14.11","dist":{"integrity":"sha512-EkFwzYeHiykCjilAxm+9troQZLcm3KTgA69w9pW6v2o377t6PhRk3SzD2lT709RWpm/BZEm3lsm52CLEIPpsVw==","shasum":"2cd293b96f58e15aadd790513fd86077c03483de","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.307.tgz","fileCount":70,"unpackedSize":142489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP2HiCRA9TVsSAnZWagAAjFwQAIldBd+IAyjnvsxIwjlG\nukhw2ubHo8rDagHYYxtygnJ/e6XODKRpBCUnixi1wKIIC8cJ5GmVrGl+Ju1m\nvKLxAy8IIASnZMr44XiKdkCOIDowkEp/b57ymPNxIJIv4mgKW9Kb7+tJeYjy\nGrOSGGi1hxsRFdRIFmVid/clG0/wFTKJOpowsiREqQZI18TeXSYt6/YvAYV2\n4DYnWBq4D31nXwrMXipmTZXKv09TJ+DVa52DI9mVxODBY/5AN7ffwHz0LVNY\n7lHgvXbUBX/lAqhQCB7qAVIxPDxuwwSldnDyLHUnADsqoC9PYeiPw3ft+Ek1\nh7eCa86qnctgesviaR99s8qB0BbmK/GkGvAqZYVuQYszs4QciaZ5DkGOH6Ic\nzHQpJcgjZkNaPkLdzTa+SH/8X990QHb5rmzESywdlPNhvUe6IPtUVMwQxJwQ\n6kx11pupmd/v9Zj0+4SDdrJzdjo+R0NMgpOnb+pOV95/ApQe1KTsOSiPn3Y2\nq/FRRNROkoKdFWNWdeYPBkJERH4+EljF3KKe0uIIoxjXrxvnbquz6RjF6zRX\nsgkhBv7Ohtt58W1fVILLJbvr0LqYLPEZTMonyiIFx6EvzI64h5HI/ZEg7kqw\nUGJkg1Dc+GcMr9N6yD0il+Kk3VGYdlYZl7obsJEEdWw9zw+1neRDKkbgAupn\nrhdh\r\n=ulB1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICYgAuSxW4MHGNPkTLq7qTUGgB9Tz/+9VMEELA3Av9Q+AiEA5RGoK8ydp42NV4VLTESQT7JiI9hOAnSKgvDvWnU0czw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.307_1614766562077_0.2071907342516226"},"_hasShrinkwrap":false},"1.0.108":{"name":"@leanup/cli","version":"1.0.108","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.8","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.9","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.106","@leanup/cli-core-format":"^1.0.106","@leanup/cli-core-lint":"^1.0.107","@leanup/cli-core-test":"^1.0.108","autoprefixer":"10.2.4","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.7","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.31","tsc":"1.20150623.0","typescript":"4.2.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.108","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-nXJ4yvKMcdx1Mmxp3pxNHLEOLcrSSurAjpyAcBbhM1sS/0xmJ0HUJJ38mn2kZ6ENvUcu0fD1X2ZMCQeOQbvF3g==","shasum":"5ce3cf25a02fda62cc26c5e22e31b7bb8e911c56","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.108.tgz","fileCount":64,"unpackedSize":152206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQr0jCRA9TVsSAnZWagAAyjQQAJWNbn8gJ6HKF4Tdshcv\nfqySwgCyM4pTDrM4tJRWeXuu0axPe1lWJdmY7p2kK2CpuCv8cnf7Z7nEvWyB\nqDzxws9YCYUmKe8MCHJ3SXe8ArK4MC5IRuMhbM7tTF7MMrEwspphqmHUqFVs\n0MQnFFazPFt0VkaoogLFtN3mq9dJk3sE40b5fRXDy3Pnyn55CbhknGT8eQl3\nMR2lyIgJv26cThCWS0u3KWTpqCLN9J1ZnOn9CVNfDceAzadUQIn8mvQLXu/u\n99Emj+r+er3HxBxmSBEKHQgzPjMQiHudFuWNyvEW5bkT3SrRwAdwjXJpT3gQ\n30ERl29Tyma3fizE82Bxe0Elw3e20eO8uWUvkYUYU3sZN/voBIPM/wAwMdjA\nv14tCE8HBEQDAk+/BNqQ9jxMtZerth+UQX/l5JNmmFZVMmMd5XOAIgpHX/xG\nCj3f4erfGCOJ4Cl6qG3IXueFrFLfMFJ72sGichek5DTLXaT2V3xR2GzO3ixH\nB6qvVu6wFAAF2rgqPs3dqbbTBRj76/Zq9fFqfPCcjhfM95J5m/pYT0e6xzca\n9ttAF6bgHBd88mok4xBG2tKi7GcDgp0RcZ7l6e/o7PB09sshvkRj/AoKCQGw\nQx6KBvxGRYaEkrYKu02W2XCeuogAwhGR4ZJATuQ/+6Zg5h4s/feB7WRjb2Yh\nA6Mt\r\n=yzlR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHRP10o81hGeNfepBW77vZ1VS1oj4j2mqkU7KFXwc+cCAiEA1Q5P2J2UheyjNqanWd4u4d87Lx+KWlP5zf06mKHcWfc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.108_1614986531236_0.3701042917166817"},"_hasShrinkwrap":false},"1.1.0-rc.309":{"name":"@leanup/cli","version":"1.1.0-rc.309","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.31","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.309","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-03idgBdwdGMDmJ1phc4NHnaq0f/+O62zvHpEr1SOzVakvGBAVzel6jfgX2yPIJgI0PADLjQpN2He5CswSOCX0Q==","shasum":"6f9fb131bd94d3bdeda0dafd0f349180c8eb4c60","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.309.tgz","fileCount":70,"unpackedSize":142505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQs+gCRA9TVsSAnZWagAAEZoP/3xfBwZ7w36NQ3kJivmw\nLVqsge7QIaa53pUJudKWMeC6TduXwVn3y7lfZxM7ahbh/X85iMVGvImEaK+S\npGQ+NY9nLbu8DcWGAfIizRaf9ui7iJ+DY7rqjC2hDlQ/agpVHoVr7++VJDcw\n/7VgSfQV4I/hz5BQtOgbJYytnmVSt3gCabvdxZEs8GNhRv1bmga+f7ogvnb5\nbqEvrTyx2EZv3I7RCTihBy2vl1Dk025ADk5+Jg+yObfXpz1Tt89njTBIr0a0\nAp0nWP0vtZheOZ6hjssq066/g7m4Oznok/WwPgUk/BgJFJ6a/mUkHt2pO+d5\nQN53tnyWsicDW3+ULL4oIImHSjvkN0q67li61TOkHg4oxkydT9UBsUa957h7\nH1GwXAybMW+cjp0f5W2EEfOtoUbIB7eCDynD05GpoSZ0B0DScvCCoQn8KiPi\ncDyOK1XeZnT/m+tfuJBvq93hQwijWb1cEXWytMBCBvLDLSU9JcI/ekO/NWd9\nmzdFASW+no+neC3rRJgWmvlBrNN2eDvM6Y5n46qGyKTYBsFDGoQutkMuydHV\nIqqrYvzfEMShcAEMZjdP89ibZ1g4gKz8QClggqrf05ipqTdO3Va6n7OM+acL\nU/UHs0zHg344zoqJIneLRV3AKxZ9SAp6ClS7pXJdqSNjGc+LaS8crLL9Ggy6\nkfhJ\r\n=sJAN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICuClu/U3mSh9Djyn8GbNOKyeZJnJ9HBvGYQpcYsTfDUAiEAklwme1LXEB6+ZWlPrzZDdkqOk11WqJarXQS4K+i1Pxk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.309_1614991264246_0.4915839468519343"},"_hasShrinkwrap":false},"1.1.0-rc.310":{"name":"@leanup/cli","version":"1.1.0-rc.310","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.32","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.310","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-sMNt1sO3P5HIPOX4xNya+SkygzNzeeNBbqFIuJD9w2GXDb1Cb4iJCUaRMAgPaLhjb2HgRm4ySxm1h0k1nKyDmA==","shasum":"95434aeafddc7565285214d6ada3bc326f1746d6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.310.tgz","fileCount":70,"unpackedSize":142505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRNQqCRA9TVsSAnZWagAAogIP/3RUCdPiwW+Ptl+VcO0z\nnxR5dsRo2Bk6Sz3etavHWAaVlXzBBe5HbIZSOsBFo5G7hQN5EdA2pOrXQbzK\nX5Z+XTkVgGCurKlHLgH/WCjTf4r7dbxCtWcnHLxTIJqOLShEEd+XVxQwIrxK\nnUrDnMbxYRKIXJpoKSYMuG+0omFzMJLUBCi8z+rx5ZyR2ulyLFIyH01BsDfZ\n2q1CaZtoVAtiyQss/ey7TuHu8U3R0GhsCXY+s3Xw15L9cUpJOn4hmACxlGKV\nS9GbidavoQivphvC9DhUhoDNoFGldmy37irlFpZmXjA1LmDPyJrr8OcGwPZx\nD61vor9cVx3BbWRNwOTzGC4UmF0cOQybnDUkPDnXIvW7SqzoooVHEBobsvzg\nEZ/gtY5B/XIBbyWYzAGbGu9SDrgE94mPSqerJ1mwSW9KkgKDXbz/t5cWaShg\nHTxAj0kTkitzU7VNhiKWs4CY4mYSKBEJTuxkmCTFigZEbRPVrxwK3Slq2mGv\nMidEBEzpHBKMKRWUsikKwvsGpo1Ew3jWG1HBcwJ0nZokrF9xPoULrB7K4tCn\nweJt94LsFdFtSRfnWanaxZl52lwufeinCg6/ar0APKVuVQ7XA1Uy7mlDaMnv\n6r4DpX57yvNMgGOmgGGBYCeedYB8mqaBVab6PSb1PMoq2dZNwkXpa+fJ7D7z\n1UOh\r\n=fbSd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICVpympu/MUAKLSzKCl8QdTdBbLHKxJz8kFTOaC5IrNVAiEAzdAvdH7o7Cq2A8GBs0uXHh74UmXh3y1qExuIKO2PZ2Y="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.310_1615123497652_0.114440219939419"},"_hasShrinkwrap":false},"1.0.109":{"name":"@leanup/cli","version":"1.0.109","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.8","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.9","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.109","@leanup/cli-core-format":"^1.0.109","@leanup/cli-core-lint":"^1.0.109","@leanup/cli-core-test":"^1.0.109","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.7","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.32","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.109","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2sHVtE+zutbLx4SDzbkd02IJRWozhcW+uD6UMRevJJOMwL56Cn+MFaLaoYV2fXIm1n13hacPy3GGKyn4tBN0xw==","shasum":"b6ba8a1090d46990d4ee8f342f3061d7c5dab7b4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.109.tgz","fileCount":64,"unpackedSize":152237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRNvMCRA9TVsSAnZWagAAm0YP/A2byXSzmRWbE4rGYzIz\nOD8CXBxdql10Gp4b4FTqc4kiNmvXW5R+roZq/bTt6Lkq9ThYVlIfWF6u1TKB\nO07RiTdGk9esS4p3N6Thdvi4mBaZbNaMGLDmDxlH/uCt92L6lH/diQFI/haH\nWBp5pH9/PCoCCwVxgetWk5ZAu77dRRU50/uSx85Uogk4bZxT+8mc6COFSB5w\nVvYsQUEjuL1HdZNid5EBERwjtsIaANdOsm3YX3sxap8Nr1r9P4eNfjWhtfuI\nud1mAd3BfUs9UhHbkFyZmWaeyEhyOQ8dUjPu2HBNj9LWPpTojx8bT2WWsKzh\nEMnMd44FsPMLnMtIc5r7Yhne0KhjdI+UAPnpI4Gv2ixCxinlFRYY+cxkKVFB\n9lQFmljAw3K2dhH2E97G847HaLrFVYXwIBLHftrseM7dvGUyfcVEhfOF+A+7\nuX0QAfo8ifQ8VhpnXCkd8EJfXNRssD4RwUrqvPlB/0wWmNbmr3yID1opT5q0\nDLH90TEmmYF+MVxdgBVN1Ai6RlLybZE3votMBFBAqkVpwBHXQJDMkuPsvap9\nKasI/ZU1tAfgxKEn9h0GnohI4aIvOa3vF1QLbUiQg+77YyGudwPHvMFwny45\nHXVzk1i6QrQlzr7tW1ZrcoZ7vLDXhgxI+XledkXApASG1IrGdaS2L8fiGT3V\nNyfV\r\n=+A6J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDa+c2Cm23ygAwv2cFsG0H6FalDKc4+Zm94ruQrcUiNOgIgWWLd15S+uH5Ei+6wjPYKVTOCJEpBzssLmvBoFYSxPMY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.109_1615125451990_0.17579017023877075"},"_hasShrinkwrap":false},"1.1.0-rc.311":{"name":"@leanup/cli","version":"1.1.0-rc.311","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.32","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.311","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-NttVNC8IckmaUQFXjWFgIt+viMSBRd4oshMtVOd3H+F1aXVVT6HAn72enEZAOw52MVhnyIbDCh9kWDH/JRbrVA==","shasum":"7cb4b9852e7f4e669f7e12d97e74db3b6e255c40","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.311.tgz","fileCount":70,"unpackedSize":142505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRT2nCRA9TVsSAnZWagAAeeMP/3Uoo+tzPQa6Wt4mgkEz\nHym2FKIXQQE+EF7zmDxI9/ROXp/s9nrQqV85K5xFQ2IYjkh90WcoklJxPqRh\n+xBOGx3kGkxpPhv1kKAV43Bt3DgB1TNbHs85A4EVZcqhltMg5JrkkhRW3W9j\ntj9lLQ9PH37nnGnOdwZ+OhTZLsBJMdPl3yGVgMvEw8VPRQYiNXcqVnQK6aOa\n6rJThV0l9S3PIJ454eXTqYcixfIxnIOvertzENXT0gm1WwiwKzWnH0UW6lGA\nTHeb+L4W3OiabC/Ab3MYX8Knry96EHWI/5DZq4wadnE7jZwf+cJQ6jJQ5mh0\n/ffWGkr0kkY/RQXZHUfUWtaOvGeIjDbIzgfpH6KTnADo0tdsWVOD6Wi8Q0h6\nP9CjPS7LlB04uFCnr+4wwHoZOP3aQKs4ztZzwLnTrak8xOXsYF/UHX7hBIX1\nxTFfT4VmUwXlUSKkZYB6mf4gfalZOhJ6ET86FOOdH6/v6Z5ROJLhomf94MkA\nfHnpKwPdx5MlN9pLbb/XIrcmspMsp61YjZeJTKI7hw9TH+B48Uwb1yHRbkNF\n+n3LvEUtA7Kz3iM7olvc3gQV9nPtLppwCHsKI7urheS+f8E/SNwR7h5DHoyF\nfS8W9k2uZz0IUF3FZ6sWrux9ZTH7YReRnJkn1IuYsR/qLCBGMQyEoH3Xant2\nILT5\r\n=Xytv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7ooUz/nIB4ymEVfkyaNgu5fYsmlhAWJq7nrTG+woKzAIgM7H62NuABklOxEBOMEEB0Oj4YO760drJTEPDeUXNsOQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.311_1615150502985_0.1141744451023059"},"_hasShrinkwrap":false},"1.0.110":{"name":"@leanup/cli","version":"1.0.110","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.8","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.9","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.110","@leanup/cli-core-format":"^1.0.110","@leanup/cli-core-lint":"^1.0.110","@leanup/cli-core-test":"^1.0.110","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.7","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.32","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.110","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-dt55xHrZqDeHh2Zi6pNe99nqFOyNVeBbnZDr3j3Q5NjG3Oh7rlmsAA/ENF0vTKP/kn1WDEMkVdOUVjuwq0EMOA==","shasum":"a1fe3d5040f4cd52d6aa66e0b4c1a56b3557ab1a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.110.tgz","fileCount":64,"unpackedSize":152237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRVEJCRA9TVsSAnZWagAAmnsP/jKpVdCWfvB69cW+VRRf\nLpSt50sgPfW0c9Rvx96ezKrwidOAtIJZvmM/H0JsenU31BWNRRwgwdG5bYkL\n5+JY6xdPrR3hNB0mtD9qemFBx7+2LiPj3J+7kqg18+qszQeaXteLRIwFiPdU\nvEZHQ3v1zp2oF6qG9Kg3TciSN4LwNQ8sp2JvAfdhFocpMvjFiL9FqxJCHc3B\nSWFzmuzRINkZmFcTBWKdu24t0s/i14anuFuqWKTf98A33z06aQwfKHu8a6Xd\n29UefX8rQa6lKwsiWnAXqXcch1DDQJXTIeeh+WoXwlYyw6Dq9VUs8GFE9RZk\nLYz9XQ6UQ4J3nRqwCuqL0KbnkXOOv+OzQeBTkPV/RbgfHVIRN5LMb8Mor1rc\nsVnIblGN4v65NAHOddPjRo2JTnzNloI2Sg386iLU0hdjvmjOVV8oyNsz/jxd\nG0xMUFwSbtu1Ms7eLt/cpfz5dBnBHKSHgzPl8QhmjfWfAlCO2YHn0OMEPPne\n564sp1veaT6ZfeajvjBeRvO1ubm+8nwvoC8UYnOQ0ZPkSwt93Texdm5jmEaU\n2tilTosf3RUfUit2WvW800PowtuJpmUqGYm3IsiXR6RjXCbOWJpe874wbdDT\nzlTc9XsRiJKvJGfC3idyEKzmC/Ko67qsHJQYgsLwt9iRTbq7VOILUIkHhAJR\ne0PP\r\n=F19x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvonHqAQO5go2vaXAuj8RSeWYXudEpLpVVSyonkX0bWwIgDsUWalDSFJAiqznRiqvdZcN7pyHeQTOWP7E9W8OOKmI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.110_1615155464920_0.10437756944646126"},"_hasShrinkwrap":false},"1.1.0-rc.312":{"name":"@leanup/cli","version":"1.1.0-rc.312","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.32","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=10 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0-rc.312","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-8f7f01qrreyBQ58OwtrfRelEvCYpzklyN3BSN2IDw0iViuGQj7vwyM7IzK7hDA2eC73LfNwOALMS/sVAb3ljgw==","shasum":"a2e1eca194b34ece70265920141a7e8da38edc1c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0-rc.312.tgz","fileCount":70,"unpackedSize":142505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRVEyCRA9TVsSAnZWagAAM0YP/1tuo0Xz+SZ7kj5KqL1c\nJNaO3dUlfOt51kmOL9gKVR8bQ77MHq6OqeLD+8ONk+O0+dfBucfs2sC0WP7F\nK/qS0jHTsa3TK4jMc7j9LdKOU7rQaPOUCy1YSRZCvEi82hJOY0HNB6PpaQVL\nR7Zy2I+t1i95rA2kMWjWO2zySvGmcEV3McBy6UcVB+zN6GgXPsQLZiy/YenI\naTLeIMDmdKEVFPImGtuia8dKceoxjxkIRvhzOTWYToa+XfcMM7xrQMDngrpv\nUWCftB3JJXRyp2JskOVvEmhB7QqnKTgNdnfgevxUmHFDumqJtCdq/vocrtNx\nHbB4euo/NQEwhAiPMXGgCTBcd6b9460CptqNIbKLq0eSWvFwibSpYYuZABvS\nq4/mOQNxRA7V56imPi+t9wLaIA3IDm2Ib78BfTOKH0xGvH1KN1BUyMNpOIDI\nm19HsdDlMkZZEV/FEMoaqUJqodQMsvpWL3tMqE2LSmrSRtSa2+IEMpTp+t9B\n4syM1bbLLuFfAg5+uCfyKVqGlC25W38kh5nwYypMSvRLvQchfPGIJr0N0Cmp\nmQM2WXLT06f4hqg058/nKu7zg1DND3SNAWBI1mdA2N5vlOfExqXn7LOviTgR\nV7JUQI3i7pCRVdhqmIVyu0xxgXOzAYrjRLxunYjpm1eh7ZWSlE9Xa6nGHpfp\n8JK1\r\n=ZZRj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAcbf/RHCSsBVJ4vb6Be1a8pfIi8lX0tgBoRAxCLeg04AiBezkaD711o8yMnG4udQ0RTzS4SVAIW8c3hZtwP6wPywQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0-rc.312_1615155505910_0.46754565757486133"},"_hasShrinkwrap":false},"1.1.0":{"name":"@leanup/cli","version":"1.1.0","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.32","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.0","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-gbaiEc6wh5Qm+kmLRn44A1Dw3C6h+k0AlbtDkbvzdKYvT+AakwRb4MCWoOXDXYNXAxdYmIKKGM7wGPoHhdELHg==","shasum":"0d2f506687ad19fe2b13f6c62183e573968c52f7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.0.tgz","fileCount":70,"unpackedSize":142435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRVU9CRA9TVsSAnZWagAA640QAJmZ+prdMYXFi+7jzINd\nGcWwfkhOlwRGUPMYDwUrSI0ZG9BU3N77inRHmo7J0k9kh+gki489zTim/qgY\nZmmoZaIC3aj3R09sO0O68rHQ4Nd7BVHObaIGvzDR4k3B4vBt1/bnRCMa8yZH\nXyAgmsahKT9uqiQq9piKRSNtxoL0Gca6nJPcZgXJkWnluZwQmokXEM+uoDC5\nwk+Wj/jNKAlXfvoakhupXN8n5vMml074gLkfPeP1L1bikFGSAqsWumCpnmVY\n4GAi4XzUcOl37tGFevgus3IZzAWHFBr0JPfTrCxKDu6Zc/bKV76hOJgbVF9N\npmEPHtlNUMLGLOkGvbn7pQvWzkXIcDUQLhOjoAk3QF7uZ805pdmN6h5hScca\nHnThSGj+kavzlbrciePRv1eSVLVhLpVaH0J9PmSFnfe3Gt9DkOLBV1X47u1a\n+KORkYNG1yfMMVjVWYyMNdt1ChiB1/d1cZ+jwL5ubuh1wsGK1yK8nM4u/9vK\nQIbVpi7J1E2MmwX7kxDTLhnH/inEeRBYR6W6EXkiuszKMurlsKHi0lMp9KGM\nq1sMiF3hVnRDjpjOipy4h0H+AKdXQiqij4KC/bDuu5e5uZcqcgXpe8cDdTHm\noPS72dvuPUexUJu5QSVZkucAwcBBSuEqiMid/YilOmeYbgrTTqefqtFJheq0\nvglo\r\n=1w55\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWAw1lfHzorazTznYRDxrpj9t/hIsv2SNY2cCyKoAsaQIgVEy+BdR2ZBGQGLB3ElR4Kqtg2rAHgRSVz4wXbA+XeWU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.0_1615156540755_0.9518183719729372"},"_hasShrinkwrap":false},"1.2.0-rc.50":{"name":"@leanup/cli","version":"1.2.0-rc.50","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.32","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.50","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-zaYl3app50IEdrTWkQLYuGxWYGoOpdf6ZCDEM6fcIeAE8g3QzQKmepeDUqdD0O/VRYvca4kYq/nPvmwqrGTVhw==","shasum":"c241415155c663d3c520d0958d7d9665e37d3e47","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.50.tgz","fileCount":70,"unpackedSize":142495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRVpPCRA9TVsSAnZWagAA0m0P/2rn7cRYPzGsqyD7rSxM\nzm/oLpN2FwKSPxS7Iu2Ij4tDuXb/OFi5EE4GCslfNsLri459sOcSwzsyi7ya\ndrxK3WRMuhnamPXZhHX0B0+j2k839RlhlO6sZCyCl/O4BnmpNgMdqvCPqICb\nOasjYBPkojRcEh2I2iDd2xDIPqszt1q8XW9ucqJjE/4UocRrWsqxJSvsGivD\niZN0Br0i6CcWuDSJklRP0KJXHKvlz6JsrJRQeDfdyLoLrv1r2SQx2r1pJooV\n/Ro4Win0G9tKwOSxNaPXEqJ6U2WdG8iO4uqT4D5lTSOpNP6sVVpD1gevGMpc\nKuumgFPlB3IX4Em9Yq0b+Lz7DhEvdCn8R9X42hJYImPIEhqkAYPPAjYMvfpk\nlIMm8lpLTOaOd7anKNx37CWLyl5AqibrV41are3X8QKC9AHszpbMC7g/Xzhy\n4IK7b+/vvllxGedRzi4Rk1H9ijYajQbcjGGo7Uxc93FZClm8qcwNiu4hh53K\n2/olS4CR9CrZLalXAOwFeb24Lebm4udhCG03Zq6BF2NRV4quXWXWm0X4FsXs\nd6RvtMENdKsvMScDqgn3CzZcGtBw+hh4G8FAet8cP9RFlkBNk9/HNVamrIxd\nrPF44L4zXashUA+2zB1rlqMxlgeXL+MT5KPLyg6nrMfOm9I4g5Q/YzuXgc7W\nYihy\r\n=xxuF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHRuAPI321y+qo09J7r9MXUN/o8AlUmYyI3SrC712fN6AiBAWQt+IvScSciuj6U0xGK8zCwoxw0lX+1H8Kjqd/8NwA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.50_1615157839018_0.4174111584002518"},"_hasShrinkwrap":false},"1.0.111":{"name":"@leanup/cli","version":"1.0.111","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.8","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.9","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.110","@leanup/cli-core-format":"^1.0.110","@leanup/cli-core-lint":"^1.0.111","@leanup/cli-core-test":"^1.0.110","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.7","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.32","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.111","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-zfGc7I6TS9xGrilkzY0AirAPMoWBsjyiU3oaU5X4kB3w8MjaKZVpmSyjVaKQPshHeNI9rFBMkRVzPKdgmYZTGA==","shasum":"c52b04c5a84e495a4063bd6b4ebc235f65480a32","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.111.tgz","fileCount":64,"unpackedSize":152237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRVvTCRA9TVsSAnZWagAAHeoP/j1x13tiimby+Y85vZ61\nx6Ol1FX6cGguxZEO/AeuVXVOw+CD05MrqvY3PZZHyoB8UMssqxRVMR0G0Qs4\npb6EjzYTr7Yo9U/KvqYJ7trp7hlPwtz3vc80sV9g0QrocWfkMr+NW7DFuNtt\nlrZitXqnYA+Hi5Tx15ZGrYqbrn49cwyM5myM+kG6Gxaapf8kE//7LOuw1aeO\nLrizE2xvkN74cmM/QtzTdHtNTTGAEwSY5x0iJ277BE7cvz2K6B2FwraZPwLq\n+szLYy8qgWbYscVf40YEAn9Jg5dI11Zkw8qtsjejYQAOf2HcNlZ5fHjmwqc2\ns5IcslzcvPwpnZqVYAo3vWvUevjoILVosXE0Fcm9sbTOV2WWtTVvI/cCJ8sv\nHuyRIGBl6xLN3ht6NG1MqGGXcJSuN6GV6KPEQ+RvaLIAssTZ9otEpsFwJ3TD\nncBuCfBMNa6iPteeI+zvSDTtVopsFzFNQD1LKwS0Z/AZicuSJRwaJDeGUuBF\nU7ihhx2ZnWW9QMrQDjN5Zedx+ZBdAZCfFl6P14HzZpiSuuaERoXBzfRLB3Al\n0l3D5OEc8JV6PdZac/EzjcJ9oQZLcBv+HwmgHtdrzVvP21H+9KJDq51Eqz/9\n3WPoQhoYJwz5kt2XUM5UFJt8ZFNDKDewtyoixIdI2WGYbDvD+2LIoW8oS6+Z\nBHF2\r\n=Pm9C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBi3Af/lInvmCQdy57Ppzo2l8P+Ff2iOKrAnOslLpwEiAiEAtyW/N3K2PqwqnisG6p8bllJnIfWBQ+rCXouH6tWFjbo="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.111_1615158226461_0.5758065028715937"},"_hasShrinkwrap":false},"1.1.1":{"name":"@leanup/cli","version":"1.1.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.32","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.1","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bSZ5Qp2yYv8hTz9yB4uSJdYtoIht1OYyL+fOi2+n2MeKS1Okb6pr8iixNo3CfnX2WlELSrWyjjpOqRiIblnKTA==","shasum":"0e4d1ac4f03798bf416c6b03366c731df555a7c3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.1.tgz","fileCount":70,"unpackedSize":142435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRVvsCRA9TVsSAnZWagAAHdUP/2SXH0tmukZlpsObcVGQ\nv766FqPbMRLKln1PZ+yEQp3hGZe0ezl8y683CVxNm63c6D4783lZGdc7YK47\nMLsnpjkJTJk0xL4P0Re47kuiTolzi+CdOzheShQ8Kk+y7Am7m7xtpBBske9N\nnw4fr0Zi/qyUz/OuTXtKyPwt8irdb1KjYRBkVoN5J19VBxHr6Y7dPzUheSoM\ncHzhDow28UTsJvvG5Mf1Jfu5Awd9I/+bJpIAXwmFBNR30cxpctSrdbBg4N5E\nGH1UGjZN0pex043zJoLigWguQfdL/7pWleFeCebXjx53G9dg3Kv4VFr/1o+j\namlJFUaRngwV8FSEM9U3wC8lMvMp1yrjwTYWwKaoGR/e0hnrPh/sYj9P7Eyl\nXsS510v4MlLUKcFkgnFRJXp5USmtXOQb9y6+UrzwQn0mq5G71McNcUhMKgiv\nq20+b0c8YCx2kVO3wlp+LSiXbV5TiLR0sxR98M9kXMVoHcTSA+6YPiP1/m2K\nB1Ve+b7ootxPTtsE4vksbFCAVrxnzsQeP80X7FKeg7ZyugHexmjn9PmErCdM\nRf5weGxPkYw7jzGeskSd+kbTbgkJBfomPe5kBAjb7Pr1NzdtYWvdk2uPUzVn\nkM2SPOoKLn1j1SIWu5kBHhH6Glu2PG1Usc+xCu05eFpQEzXKJLecnLwPUX5I\nxXJS\r\n=Gbz7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDV5lf5DflKfg9owaky132E+TRGuE3Ba3swEEFopNtqUgIgRetV0pTYPYYnvLg6IfHdmvcj/fY9pql9TMehPlFuCEw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.1_1615158252429_0.1355872060815324"},"_hasShrinkwrap":false},"1.2.0-rc.51":{"name":"@leanup/cli","version":"1.2.0-rc.51","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.32","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.51","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bHZmx0ziwVzkAahZSZoOC7t5EwOtvuQ5+jIB9kT4vZ5cqrFzUS3TwZDbfZXe7xIeTAi7jBnd1MboFG/Upa4jCg==","shasum":"a2728149b3895b6210e2b36ab3a79c84ec092491","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.51.tgz","fileCount":70,"unpackedSize":142495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRV3RCRA9TVsSAnZWagAAHvQP/A+LazlRHElvH999k5Si\n5K1kySZjYO3Wv4EQqMBh4X/IZNOg794qkm/gwt2iY87sjC9uVqB0x6RRj7YS\n7z4EXB1TvQIJOwqvMDWgDNMLlOKRAplSozj7Lv3M+dXsCCnyupmqafjUKuc0\npWLsvcbHLZez2RFnAOBYgZTTeBBlYacZBa/UEUZDzjr4uYWNdTJ7P8rLJTe5\nzZF92FuD+s7BKJqOhOriLP92XkuC/B92BDVrLDAOa/QqdqwXrSdGbh8lBPwr\nCsO973KPmXuy9T9dp/0w3aZjH9VNwRo1eRUSpLAD7CxXLJ5gJNT/5GHT9ncy\nOSAp8hSALQim8JvgLFfNZ98qjYnl2VeYsF2FtL+AKA+Lb8H2Ccqq1SjO37SJ\nWkwgxjaXe3ezZeUOBaS0DxN0e5N+KOurP5s+G9+5fLHdcMcigou+0pUfGC+A\nIjehLTkbzy6VzNwGH708N8SacpLQf7X+69zcZHuAP7I/AHcvpeS6b9EsSe98\nEvQVOj6Vg9JynqXvqkCBPsJ5Lctle1UlKi/GJy6Uun3Z3VzLJHOib3bupe44\nG/hNGkZ5VkZWuOpjA3yO5OBkRsElIspAlAwHqVA/8uidPxWCATgCoVtiYD9R\nIov8U2oEuj+f3wV5gSgbQEHPO3TzPva8wMYAw6RxydShMCHU8XNU4yA8sJt9\noKw3\r\n=3gUh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGsiV3uGPzJh/msJFhDG7FtV6PMnk/c3X68PmOhbQ+ANAiAfQYaflr8UntmEpHWkrDkUxzB6qNmg+Putmp6xU04Exw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.51_1615158737112_0.25867620710389705"},"_hasShrinkwrap":false},"1.1.2":{"name":"@leanup/cli","version":"1.1.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.32","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.2","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-zB57lOsY/p4G1r3Zw88jO3WlrOAV17FbB075E5fbucKn16QhpO7sQGQQL/UlXAxwa4gn8PJTgTLb4Uz7LsLWMg==","shasum":"07684b111374a3f34ea100bd1b85d85bd97f7182","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.2.tgz","fileCount":70,"unpackedSize":142434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRvlwCRA9TVsSAnZWagAA31wP/RDHxbp31yymoyNju5Ii\nSTpzBHE0o363a/ZQIaTK71loNMJs0xTWDngATlM5KRlV90Be8VxMunvpXvKQ\n+uv6ZBArLy2RdF07EtAPCSP/yWvg7a0UDevIpzrApc6EMeaxhMXfIhRxZQVB\nvxkCKAKg5AavdCQ42cQ/sFVtD/FEofNJO5Zzbm8NwgobwCkROhyVri3yad+M\nnm4FENFDIBCDisv3kzibqm+9ZD5UvaUNbwrR0XSaYMEYmKgxmmju1aIZKQ75\nDECXPbGJCi9AFpvKuL8CyTni9Jm311TghUsENepH6jvl62bhP2v2QBsLplpT\nyO0Qo1M5D91+AS+b48Zlt9tp9b/I4efVdqAka+luQOOxIPyzt4eRYdJnntIM\n/iUvyOyd8MOvsRuH0BXORL9Aa4Hmqs4BjwEaBfmpM9/v6b8j2bMvkHWBgpJF\nZ5NbZdeid6sdJXJwMSCmYzJ2o1syf/GdBDw2MoLr2EA8ruXG8JrUjkaiqccZ\n+fW2CNAKPTMAJGQREDdN2BfSsipJasP3Yhya8XUR48OIpY8RyOuKxRpvWjxn\nukob8h7sghT+c9nKslrzpIFFn0Wh3/UsqGsqYsId+y5uZJi4b5sTBm4fkple\naSLYHNrifxXkyTKoHOuS2Wjt3EYH3ud0p4s51idkiRSQAbY1j6uI6/Nk7N3l\nIkDr\r\n=G1yU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICt2fp4ZLlR9YYooThO3pqKAiwci8B5M3qN59LFAcQL6AiEAzhkwPSDXO+XpaIXJyjxGYIG67wT0ntUBJrCwgcKGfIw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.2_1615264112017_0.4054143362384901"},"_hasShrinkwrap":false},"1.2.0-rc.52":{"name":"@leanup/cli","version":"1.2.0-rc.52","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.32","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.52","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-HDSVo5SNvS5n5LI95gw73slKDBDylVNmhdVaIHxLX7XRGdyedxj97QLqRuoayT9zNkaYMlUWwI8/ZrO8EKbfGg==","shasum":"f5a98f6b50d090a0440347aa487728fc25f0cd5f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.52.tgz","fileCount":70,"unpackedSize":142494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRvq+CRA9TVsSAnZWagAASxEP/3EGIv+V0Nk2ekehBJwy\nB/HOnjVl9F0orFlC0XEjWoZbV+5qaPP0+Mgats6WFLIOvioWOvb1z61L+NH4\nA19ToZ8FSJ+Aj1EOIIqqffGnazYiYYPo1IjESR55QsA4/b/fQNIhnzvqYxIM\naii3x9b7RHXSsm7zCB+TCSoCxqmANvYGTOabbA/K/dHHExo7K69SrnD+aRic\nk9b3Z/arVp9NtFd9pkcJZwyPL6OvEGRuD7v1NAFod5sdn18HLBcxlaUhJ/Pt\njVcb3tT/gtydE1WWPo7mEvIwFcVC7BszAZ4CkPci7XPUS4sOSj5joEJSyOvW\nusIBsn+r571D7T5zVujzuZOqct/qf56HB4arNo0FHrB3UjRBaGlph5E5YfND\nF+Tp/8okCTlkYwylPiXM8HM5PpUo8gYIJZZb1yupWmBCXkS0tD936cxEFPEf\nf4xuyJhX699/ueecY2XIYWfd/J5hF1Kr2M/k6BcAnExy1ZZOTTnvMa6VCkHA\nEpY0lJUiHaAgeN7WXvKfaFxTspMxn79pQ5N+T8OjmDx14Iq9ORw2oMl/8pUg\nwZ+oybUJq9wSUr29z9B9ofH/u6qgrnY9hHcC/RJxim+e8taEluusdIoaOb7+\njOX+qVNRWmZSZAd62FQ+1EpfLCCpCARdnomHJAvZokK+uG47H/82YDsrlVvT\n70W9\r\n=/DEx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9Vz6iW7wOnOedXaq8vsfdlIN2IdDZySpbTZSqsk7YOQIgZOX+Al6lCQugRhNSPWIvfzED7/xAioQNro93zJ3sJ2A="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.52_1615264445595_0.015318483538340644"},"_hasShrinkwrap":false},"1.2.0-rc.53":{"name":"@leanup/cli","version":"1.2.0-rc.53","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.33","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.53","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-syKX49MxYwThtPgQ7zAGaqHeJkKGF1vm0AOSmYj4xVl0IbjAuECPVWWBgFND8xDWx5do3g083FfoyY35qZ0m2w==","shasum":"38c2e4ad81e6e7d1600fef7c16101d9d6aef2bd7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.53.tgz","fileCount":70,"unpackedSize":142494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgShQHCRA9TVsSAnZWagAAxy0QAIySvZ3ELG7ZA7Ne+BmW\nmge1aVDnVy+XVxwDSbW7J8lcYwuCgLsymfrcAE2T5Us2CE7gPUVgiApDB1R8\nm6wA5ieLxc4pod4e/82ErzXkH41WEYe5GSv/wKFM5sWio5+ZxhECbVZE813p\neZSPsW8FSTjuUj9o5DJkXR50vmjsx43HkB/RJn81QmeIEK3j/vD6L1D7leyC\n4GUnyfruGK4aOzwtjV8LgyK7ryuB02pAoPhiGJAnD3yKi04uJ3g9wKT1ToQV\nAyn9eN49FCCbUyLijEi6HYxTsaJvtIx0UCQZkcUlWYeCouKTFzKxLr00OGoF\nw3ZgmgCxPvv5lft72DBY6Vz9iS8UfY5gi7m/mS4oJOO7iWB17LlcTImna2ou\nsOCrM30FX1VMMfq/EYA3nqoEC6B4iTHkI7m/g5jqkRtXXe9wyjho/2vL1Eyn\n2Yf3wS/XeJ8jad6kyqurKBh5d/o5e1wJI0Yt5V/l8sIL8aHCjmopu29O4TZJ\nhTKTodFwQ1pGmBA3sjfEE5q87k1gzXFKEahAOgylokI2gnon3vVfkcTihXjX\nSjanpdwHWmTCGQifJgZ98LY2ynBJp3eiRrbn0OA8/H+ymhjyld2dGx/a4OQB\nkZslY+SCkAi0wmMgqweLh50HHWhI2Kh/SiY4kh2v+upgn34emwwjlcODplOn\n7CgY\r\n=JrbB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3yXus67pnM3kL8yX93AJ8KiUlCk3zCa4BLRi7wkPGvwIgCdeecFEfs0YPM/aX063cAEJbZNkwU1zOsXLQxhgMDR0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.53_1615467527067_0.7494962557289888"},"_hasShrinkwrap":false},"1.1.3":{"name":"@leanup/cli","version":"1.1.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.33","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.3","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZGozU6R0USNrBxAjMxvKmWVbBlUXOiNfPAa3cKnX6z+saeNaVCR1krH4/6p2KCKxaAcPY0MZJiESSsr89BNNbA==","shasum":"c39481f7d09ac8c2b0d027a1edeeeb68c2e73f3f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.3.tgz","fileCount":70,"unpackedSize":142434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgShkpCRA9TVsSAnZWagAA7ZIQAKHuOuaX8KBqI/o6OW/i\nhuDFDgLIVfrJeq0sKCoWoydKUZHNgTZzTFf54EiPJfZHTqteK01+Zu8un8iq\nWgmRBI1iJgIA0noAdIfagzAt+RlXlsEZwPPm3xFcAMmHFZ8Lz8MK4YmiAXcU\npyGPKUNpDm3g8ZnXK73EXn3yPLFQ2X1Mk/kTqu9UykG+rYufTMLKp8jC0ynH\nUmqFt42AoPLKMJcCVYTnoCNzSkVH8DIowQkygXNHOTCoNEWsTaIl9nKz1IOa\nJgrzinD61Zg2shSPKQXMacjZcLPQw8/TZBhHbA3ZeH0sG+tpdA9bXmo4CYPO\nw3ATDsQoMXuR93PBCKHVCIaPQXpsuChto22/LYMDNhq378Ppj1tatKCxzpWW\n21PHSaXXh1MfySzG81MWvQ9BKq16C2RY2EQGpEEUx3m4jE8dU4d4T9UpOZl8\nXkUV04rbfbcMq2excZasMO17Atn8CG8HDl0TDXJKuPJTNXwe6AQ18bzNScaM\ndib0ZE/WKX66x2vzsjT5E0olb654pJh8pSDptKRYefm8yRZZ+l2ZoPU7swkf\nNGS9cdRcpRvu4SS8qBuwWsWaGTYQb4XMSqXmZN1OUwSkSvVLg+h1NShHGsvp\nml8vLkQtGVz6LaoNhxDnx03LLw0m7CZg36vEy3d8MoriQcc8Kc/kDYFD7uqc\nERUG\r\n=cA18\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7dPLKsBGznBJsOPx3h0PV1eVlpQ/ib7HNcJ73s6FL6AiEAwQyhKW5jTU6s/dhfuswpRxZd6zTfXkO8ngFY4lrXhYc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.3_1615468840950_0.8293408384301193"},"_hasShrinkwrap":false},"1.0.113":{"name":"@leanup/cli","version":"1.0.113","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.10","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.10","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.113","@leanup/cli-core-format":"^1.0.113","@leanup/cli-core-lint":"^1.0.113","@leanup/cli-core-test":"^1.0.113","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.8","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.33","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.0.113","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-tKoGP8XYl05+3TmMKpydA/khvGKlQRG/rWKO6t/cHYI+J+9a1cvOJEAcc/er8GHoOtELFOuDqMaCjcJn9SSvFg==","shasum":"878e78eaec74e778415d511daec1e2b4fabc7b82","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.113.tgz","fileCount":64,"unpackedSize":152174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgShm0CRA9TVsSAnZWagAACwkQAJ7Wr/mj5mMrKCobxNwS\n7k2F1T8fzbUZAFNP0gSOKUzTl+EB1NDmS5d+Xzxvzc4L5YwZ+us2AgcWjoIv\nBNYbLf/y1IBY8TKymn8NscKQhZ6V1W+cAi6E6eK32+P56iuCZ+kf7shFZ/DB\nqnuyYcyfDib1NhrxkgBfhPOShXh2Uh0D/bRLDgoY//EP2jRJkTWAM3V3IvQL\nItjHtA2GBelmqpR0YEh/41kLQbXcse5GIMDatneL19fn2za3PLVa5n2kD3NX\niCXWmcihfBRCB8X/U96D94aJJVJzPAg5yC0J3SozXw6JM3k/SLLPbTUi1kyo\ni9YPT7HYslpttvBI7xkk7JhDk8MwyljKcX1gXDT30zU3jl160PMemqzv+mtp\ntHYEpKUz/RO3i7EBTOEwfmt9xAX/3hhbRiucZf4U7xvHR0GkwYFnQY652uhi\nTJXJOI7ojMnA1xzbs82PgchOqVD1UDjVq07WI/uh4DsdngNQ4oqWAa/txpEh\nZq/IoZsum0ndnjUiFW+flUVQF4VRx02NNlQJDcAoNFeBw2KwVIu7akRNTxGv\nN7oKU1tZDW2kAAY5Dk7QQeb1rjM+cfH02JnUWzCTQ/Vurd/8a80BZKt5aRTR\nxZti0T36loxPevkgZ710DXSq2RkoBm1h2rc/+ZKYC9j3nK2BLjEVKBA9t6Dk\nvhOl\r\n=C5hk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKklnqnj5HSdHKGDw+wIE4Coc7HcSQtRdxh9dLqGhpzAIgboKLO/J3ALtYEVGsmlZSpgB8DCRR48VLWG8cPxBuJRY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.113_1615468980037_0.05739269408059844"},"_hasShrinkwrap":false},"1.2.0-rc.54":{"name":"@leanup/cli","version":"1.2.0-rc.54","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.33","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.54","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ANV5Vk7DPJL/qu4863mG3Rv5eg9qcOeZ/KXv0AiIK9QVN72swA4ngYUP5Fv6SL1/0a/AyN8nLMzFWCA2PIBJ4Q==","shasum":"590af1b194f22b847b19bf1efaaba373957509ff","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.54.tgz","fileCount":70,"unpackedSize":142494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSyjxCRA9TVsSAnZWagAAtsgP/3vszzYkupH+05fiY68n\nuZdwpAhyggWkCm4JRBnUt/BTJYLvUqiByGVwQ8IbOmAZDo/HrsYOyQYYnGIt\nf6CWToKD53whNKdJWjXc5rqHjhjkwfILeNXRjD/RBDCWabsXp2UNcJlSwK9d\nw062m1NvNms9WWm64nmG3ichzmMkN0O9XBodqVfyaJhg3DFlMyliNZ5UVwNd\n2deNhizydw5Kn8jTZubgYEtf/LXBajtab14ZcWOW+B5EdYwe9rlw/9DOSlVB\nD98SwKEHDlwBRhEt3QGVnTFd3kKq8Hbv4fMEH1xA2VTuTsKR1wxmjURQhVoe\nPrCDasmaBqEc489udcV9HCcXI8Bs8MIpBXTJGQAEu4KYTDnkKQuQUNFviiH8\nmp0/+oLSxwsIy+jCK5iQYm76XCM92Edy5hCpUEzGXpNeNS0Fuz1/abmhOhMR\nvAR5a6jy1drjVGOohny4VOqzD/UTnfXm2p8PpgMBh6CbILhDSIxpQaEHh36N\nwhouGFJLdXeEuL7Lh0SUWptBfR6T1vW9eBqQiY/Ky6VhsNsgKRWtTgf0QeO/\nI7EK27+qGPEHelA4z7Buz0WY2bUdBrMr9dUk3vHtLFQI81/uKG54fKORPevo\nSj0G4npOL+Hs7Jju+DlDvZ41JdOr4SWpaylvShmIJaLsk46v9NsZsCb43MDc\nKxRW\r\n=wzdY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPv/HnxcyKiczFUil5+yAaTDS3WJFcTGp6o6jktSMRWQIgKozGsr295frCLT+rM9Tloh9C0fiqMO0XkSzQX3IP+Dc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.54_1615538416724_0.5114543334533581"},"_hasShrinkwrap":false},"1.1.4":{"name":"@leanup/cli","version":"1.1.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.33","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.4","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-0XD2v/gFoziidDx407ajc99wsC1Vk4PDjI5rBwJxrwbkaMQaNj/WB42ttodPcKQtY33KbhqA1LfyZhCECe2hKw==","shasum":"bec4e81ab7977d5e942d8c53dd538a4e4244f128","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.4.tgz","fileCount":70,"unpackedSize":142434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS1U9CRA9TVsSAnZWagAAVKIP/AjsBpKtcBl3eXUcPraO\n5UINIkQetuDqHQ8pG7Ymn/29DBqqRZzssXmK7hCmvylsuVNBzxlwjos0AJQz\n3Dig3KPYzhCSYM4Q5xzsJ6cZmx8NqHY6igNHdCoklvWa6xIfoGdLxKLViGtc\nx+F/FrtaFSxFcc2KOlVhWAfdupwrY0FPhEkEkFkKo/4kRzTzds2ugCPfKlfD\nGUxKmIg9zCrZcuEnUivEv52on7XEzVnevOUdIcXfdSKtQUViSfDiZzfQw2Jy\n3daOKPCi6a5hFVml7lnIwlktcTccPcBkjPfdZ5uIVWeLWbNw4wSyZWLA+it4\nw67BKz4q/EVHEMgVtMv0jnjCR6z5HcnSrKDgSqLvOCp4fPBq/qSPbWeLvL32\nQPDidD9Bsi0hqFhIh2yEZeZFrZd8HB199Dl5jX7TWpNysShLdRCNpoGaBfDu\nLnSVP+jhm5Uz2TzM8UANFeqpL3L+cxwshoxWWu2+IYz9YDvMqFrGwS3hqlIa\n+/GILag100jU1uk3cAcRrz7iwDkFCcW8S7dvbiPhWTW7gmpa6TpeOhEJUnWK\nRkAG2JUBNyXuhEYd0JNpL7EXWlfaQnXhkBav+Wk8jC0rAe/XBaP2Bdk/Zt4H\nFINiR3qpMGGhtH69KBeVTo1QpFvRCWyLO/IJ5ypVNW7SlDz6RRXQqbSgCKZw\nR80M\r\n=FlOR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIETbKjkWKaojqPry4ieMUO73g4EZnduO3YHJmDp8xXQuAiAg6Pf7x+RMcTsAsoew8Jt4VtcPKhI2lKjNEL8ShxglUw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.4_1615549756723_0.04119915831627896"},"_hasShrinkwrap":false},"1.0.114":{"name":"@leanup/cli","version":"1.0.114","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.10","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.10","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.114","@leanup/cli-core-format":"^1.0.114","@leanup/cli-core-lint":"^1.0.114","@leanup/cli-core-test":"^1.0.114","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.8","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.33","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.114","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-DJ9BKYx5ebV+AuRr1vzL3vE0aZxnqdV47ogwpSHyntUJjma9RJ9tPiUUvcpnBhXALMene/8RCeKX3otLzAExzQ==","shasum":"5fb8804077c0d12b12ee86cbb1464b20f51cd53d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.114.tgz","fileCount":64,"unpackedSize":152174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS3ALCRA9TVsSAnZWagAAbnQP/2PF560n8+55rA3fgBfS\n9X1EfhfhfPJM9n6CSErVOvN2U41OlmpnkXQvw1n3ZN1Kid+5CWepgRAeZVSX\n7dXSpygO/vAp7DSD+thBFNVbvirEl3tR+jMxh2huGcG+5Gz7Veapv977iA/B\nvhnUhkEu4G/r2RjOZNV+2CyZBfdG+F3CWwGA6hFHSz6deHMVL4/nlq6aYq4D\ntjX3V9Dfn3pLJFun0GE13689rH6iWxZjBghSFy8K4BuVL3KdZLYvZjAihcLL\nJCY2ULDkH67iIjB0w8rB04R+8FBfE5xvUkfVyWGIZklKgH15tjvGJN4zaYJ6\nXmAoL84Lr3iVB6pix6KYA8G8m+Zvl8k/d6Vx73iJ8jN5qHUoo8P/mUrnDcLv\nSUlpCt8CxSkQM5TkZXGVi62V6z5Rv14lVRKpT5jTQ1KpNAOYwzLbgjLE7/Zl\nK5cCvnm5At9Jb/80fe+5ll6jjfDSHZVb8Ua+bnIqLgFUv7a+JzRMIu92Clv2\n6Qo2q73ppoDH1bGW07NmCVybY8SThKBWYCvtCsMz9+hy7zB4fj4AeXv5KQzl\nHJ7X4ACQx0Glw77hSSuN+EYPQ+MJNw5smQxE8KbTQpBlyTMjVczjuRhJ8uFM\nKp2VGNUGKi6j8/37GdMEuoaCm++0S/CD9bGMHblt8rqxIhCSo2+cpS7II0Zy\natGK\r\n=gi2H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxzrFvYBzjIEfzcWb8QVKzKZG7D+aG/RYGNq31TsxsrwIgTBl4AkZ/I+p7hNvU5Zg23tJvOHn12VFYaUBixUPnW5k="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.114_1615556619302_0.3451571351257605"},"_hasShrinkwrap":false},"1.1.5":{"name":"@leanup/cli","version":"1.1.5","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.34","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.5","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-+K0sfmlS4Svq1ArQ0r026Qiy4A/eOQbXslFT1g2b3582CIhrc0J90JdB6E8oNOoRul+5Ips6pK379l4hy7e+Yw==","shasum":"60bd2e48ff7ee26b5afbd1c48b9e69797899ebb2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.5.tgz","fileCount":70,"unpackedSize":142434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTNp6CRA9TVsSAnZWagAApwEP/jMuen1t0fgjKDnRUmGy\n0BnClG/nJ68VLkbYhaBBvz/4idmW2cbBoAwKcdVtTxlBpWH/pSn7GplHI/u+\nthXtdgjNTTH7b9xlTw+M1pT+g2g5jbIegcYRsltvtfU02OXmosxrr1UEMegH\nligmw7QTb8geWqwVY4G4u/hY3RmbNzSWnhCj2ERDvOS8eCek+Iygh80+dcYs\neIK5RCLZJbyMBClyQL09QoTEHLVPhC/i/IOmcj28M5S4PM+4Q4V9o1fqlPt4\n2CaF2lxPB1t/KSpBmissxHaVgh6z6b8+e0fVweaOChWWx+iZs2pfCLOGdIml\nNqYqn7SUlJCrA6aY2rd6vR8lXGKbXZp0zqvzotA9CHFnyw3kFB2hb0vLcciD\n8yCjhPxFPYVC1bixa2Z2Q3yoFx/DEwjgNapPjPEZlu4YsYDjDquhhrDdL/LU\nLgESsXC3BwyWI6vpzHz+WrT2N7l+YP96d9M47X/x3GPZvFigkScbCNaLBmGb\nv9ZgIVIEEmOOsAeN6E7Wy4hP87SQ6D58gmhetKYlVTHRGhkhO6Z92tvjT6CB\njDTZTPGfCoyYl9MYqPnRjmYM0mmUyW+KbMgKRsKuwiWWit6KlupC9VjAe03V\nQt12uY9b74jy14NVXddJNDUlqOUXF1SwKnH/1qNfVczqNZZK8LLK7Z1XhPRb\nzoNP\r\n=znm6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAWFnkkKx7H3ZV3Ei3BfMF4qAuO+1aTvEeCFKwqc1IztAiEAoi3laXjt7ioCDVTBqS0ICyetQcPgrD0qvbGCitqJcHA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.5_1615649401730_0.564378359720445"},"_hasShrinkwrap":false},"1.2.0-rc.55":{"name":"@leanup/cli","version":"1.2.0-rc.55","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.34","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.55","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mXvur26f7FUlUOpvEl+M48hhf1IdMb/4XkaeYDLf1D/pIym5h6Uz8t47DBIuCZwEcM+puqZ0r9PgdS1TUUXeVg==","shasum":"7520a3c91d4e1adb81d2a5b80c4e4afafa8eb51b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.55.tgz","fileCount":70,"unpackedSize":143287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTNqXCRA9TVsSAnZWagAAevMP/jvbvvvl/J2Z7nbXYl1X\nd1o8xcYhTYAv81j7G+MnaY7oBNekhJ3NZPSc3q8SUI/pV4Il6oZY9xUh1ePo\nyRW9KnCh0Dd8NhIzAbmTySt7a6O2IcpZH23+pPpaaFa9rMhuC4koL1t+gtWp\n5gSx/Iqj3NWDefG+30GUfOJbZ2nN19VlQSzLqrS/Uf3VC8ACjwD6hh3cNTs+\ndBbW6uJcHAO624t5CbOslN/MrPq7lzmsKGtFrsgwCIBEupMPIYuqoNT/KaPc\njNaZwm+dIwBGtz4cv2WS5ZCn+bl0fePynuU6Q55vud4pFQ87RamxcJ30Q8iI\naEHKG/I9h8BspXSC7M9FF+yco9G5ilf3yb4IEdiG5xzJ07a9MGB1+PcxTMIY\nd01BHqmhOsVXj141Wof7qQCFpUXJyUxet7aohnmGnnFDPwDFTmNJLu+SOhJ7\n0E/eRndDo8q/BDzzvc6wxLwIoGylo2o0YogjtrkHzeJpkaNFqMfsMYTSzi9q\nxNNMrmb7TwCFTFirpnsYLLwncYreD3uEUUVNCaTwEl5iMsn4Fz2VLoNpwDX+\neohkyD9jN2hPPaqBw1EWiyCl3sVeTkcAcmXsKEzbuZvF+Li9muy8mwaYps8T\npuoC6T0cxqTFUh77youh8923bOgEV/sikwXWlDNdxlFEe1rmRPXa6j3uPSWt\nxoxF\r\n=qNzd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBngFeUVAVCh31pxVFzwjJuj/YR5dUnCQifGuCMdZOQUAiAORf6HhJrH1dk/SvxX9JZp42spYUbH6R7Qa1yKHmWy0Q=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.55_1615649431171_0.6101408047678434"},"_hasShrinkwrap":false},"1.0.115":{"name":"@leanup/cli","version":"1.0.115","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.10","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.10","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"^1.0.115","@leanup/cli-core-format":"^1.0.115","@leanup/cli-core-lint":"^1.0.115","@leanup/cli-core-test":"^1.0.115","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.8","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.34","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.115","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-DfAseUIayGqwEZ8XylpJwkwIh6eH+gtTtrMZraWL/TS3m8meBroJkerSDebTwKL8+WvBMYmEgNEuy1qwhpe7Eg==","shasum":"649904876f4455d49772ecce3922eff7e467be02","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.115.tgz","fileCount":64,"unpackedSize":152174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTN57CRA9TVsSAnZWagAA+lEP/35a8H0oC0zjsoxMW4Gk\nQH+OmQEoRj/4xwl9Wd60R9TH4j6au08bi7tXaMcOkx1O7vWHlnQyc18JPfHw\nbJ9vouck/ThsdpN6pF7dT5RCDe1Lm/c2OKy18R+ZavnD+OBzkKdZrMIRBjH7\nMDohTxag6wPn5kaJOhazXLsrFOofqiGWBdgOWAEX8a+wKwfKBsC9KuKKQ/mB\nPQ/DpNlYR6AH4Hi8Uu9iigm8sH5jPG4ORat1YB2deoSVhdyUNOqH1Scj+9qW\ncOPx6pcg9BqSVJLERFVwk+8u2cmTgI3DsmokEo1AXvMM9OKxS6yAhE5H7EEK\nuzRmt5t/+9MsdRigG2aUcXeetIzWlBH7bQMO036iZ4GcJNOfV/K0A+oAnMxK\ncAIHScHfkyVRKApEg2hHmnTuVpUlVxvePDGsqZXUc5kZH8KCuQ3fQ5yp8A/H\nc/oZXJYl8gOh0wFkMQ/sLgfomGg5a32pkkcSOGJzq4VF02W/bEYHpWnZjBq8\nEnLzPTmTGmLNime4xqTJd5q8LXSI8TXKvoOuhsHLY2gh9F1oJnx+bn2OExIf\nMY1bWwsu4a/Fu9kLTIeBe85I0eX0vw3+/qKvaLA5GBz3plStKNi5y537Fd/g\n3eqCiT0YeXj5EGzu/5/rugwV07K4IIhPjymRLqRLYQjBUKaS1Eij1R3rqX54\n/Bot\r\n=ecOa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo5I5OXFNqnniTBef3j9G1L/WPMKGhDKyFyWZx6fCMzgIgdKHoDtwUzOl+HqxAgFutXKOu76cOVkVcfhkAxpO47Pw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.115_1615650426987_0.1484464428349126"},"_hasShrinkwrap":false},"1.1.6":{"name":"@leanup/cli","version":"1.1.6","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.34","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.6","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/eUnqo6akFGcLFF61Lt3vTSEppJZGbEL8FJHIPejq4XmyBKke6IBXl+1Te5OSgRyA/Ol2go6nnYpm7ZNtooUAg==","shasum":"c42df6753c3bcea0e692e7cdc1441e1eeae22f5d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.6.tgz","fileCount":70,"unpackedSize":142426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTVDbCRA9TVsSAnZWagAAplMQAJrYX8awNWm9Ymwal4Sk\nEx69f0lYT4mv7gFAmfAxy7EIWM3KDfit7ThnBMMFap9BLon9820dkWY8z7w0\nZDyeY90gKswkAprVqh8pGy09JrKeMNfJsnDFmPdoKfW7oGKJPoazpDP1kOoP\nMS4ORxInBp1DE7L1BEPSd9L6421LOOWdm/qEpWXqjglC4m2QXRn1QoDdwDyC\nRfSVhlBM1wi9fklHU5a1mIQSN7GOQrUjFUAo38GieuRosGK+PcUkdnPmLbvq\nATjjF0qgUYGBefExGkfSvn66JRcZCO8Lgw/A5XMV05oD+ruJg3Oi8v2a/B9t\nUSswP1vwm24C114iiNm52k6tCpxsv+jVreTxYtwCtN7tKAiREb8G3evHInN0\nxJSUlN+L4b0RwY2R0ZkEfs4MJuCxunVHZ5hp4UNkjvyXwF/5Njt1Yekp/2f6\ncEoGDIk0LEq/leb/o69Xg/k6aWHYoowWkVknXEQ2e0bo1Fm34N+xkJbhyH+K\nGDX045RQs6MyCF6X7vCdeue5SoGWgd30K0VUusyERUvONeydZntQcmIFYyCH\nYFoHTk3DGdTHYDS7C+x8yxyLJHRthKxRG7LjFc8q2aDwJYsirTEkz2ZQT906\nal59cU2ZLN5Iq3pYZiSsaRVLtrUzu4W5ibmRuQwnZgR5+Q4b6sC27pIQyDE2\nMyVF\r\n=0und\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB2PquIkJNH5zGhO1Oo1ssU/LxIWqA9r/Lct/7peOt1JAiEAuFVNO8/oFb8soAM0/GNPmtA1FwdVKEAQyidd/sRMEYM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.6_1615679706690_0.9386455027342651"},"_hasShrinkwrap":false},"1.0.116":{"name":"@leanup/cli","version":"1.0.116","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.10","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.10","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.116","@leanup/cli-core-format":"1.0.116","@leanup/cli-core-lint":"1.0.116","@leanup/cli-core-test":"1.0.116","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.8","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.34","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.116","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-24BN7m/NGl5X7ApMf58aG5Ev5KZ+G0Xp5tG9T7Bmxpd8uW4tv+LzWA/sg/Vr+4ehjNXcC5QCXKsvLW3ous4aXQ==","shasum":"f638e12a3bf8a8b6c39900e843015ca00d892ece","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.116.tgz","fileCount":64,"unpackedSize":152170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTVGECRA9TVsSAnZWagAAfOYQAI/M+8G8L4QUAiZtuwHe\nCJosEa6fWbGT2/iH9oOSK83LwoNTjYilNy1fCnoRAlMoqWFZXgnqUNOBs1ZA\n4jcDmuF9r5oShQT3Bbok6pqTu8a1RjyoOlK4TP4HsC9UGk7lfRWRHKaNARm7\nq8ZewInOV/Y/nwin9g7e+V7qrBKerLUzXE8dSPjHuLs/FyaZp+ncIUDzqJwU\n5cxKQgPlcoPxl6D2h0m2NCVohOg0Efz4vwCWpC7RHTkX+XiNjxG5LThkV1O1\ny2srro7zA+TYphGRZFLHEFOWUz1lR5QcZc8sEKzL1OhbqVepdNRPhxF+nFSu\n3hfbl/m6jJFpzPDCk/TxpCipU5U0i7P0eGNJoOHGDakw2mQPDRnP93wWkFUb\nvEUTY5X8VupKzI0KhznbfdfYSQ+at/ULszZT3IVKO5ZFl4PAi9uHJUlQaqsv\n18+C9LIuDfgU67yiiVu9X+6F/Rx+JwGPEQiQnTAxULm992qhq4heJ7A3wOwP\nudxT/6Q1X41qggxFb+tYlBvBib3kc5x92A0nTgV3/zybWRn1qhFHozvPjLk+\n2ct/WZ08+rG/+nu5La0hhOzsgMU8ugMkHcH5rvxnDDotfDSSQXd9b8A0JXzu\nc0VgIPIzsijJjg5idEhlAVv+nnY+dwOJCx55uaofCAyQl4Fh0UFaFS1V7N3L\nQA/X\r\n=vwsf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGDjVIMbFWVfVDPkGTBv/CAt+VawX9C/CDCfRfDDYwBiAiAFPNEAMCZ6MzegJwF30YfRfUoxTKE4hXe3Znf0obM42A=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.116_1615679876292_0.9730862892105161"},"_hasShrinkwrap":false},"1.2.0-rc.56":{"name":"@leanup/cli","version":"1.2.0-rc.56","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.34","@types/prettier":"2.2.2","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.56","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-cAGxF47iXpRwK84YyvkNE7cMXDgiHrZ9gxi80TE/tQRIIdokAyr5MB9VaZgBYTURyQsiqs/ql2NoCAYfBCJ5tw==","shasum":"9e0b232e1f0bc9d0a23ec2e70baadce2d41098ac","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.56.tgz","fileCount":70,"unpackedSize":143279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTVGVCRA9TVsSAnZWagAA9okP/3iwEdPIdm1mnIoFJ9WW\nVIw4s+RObe8tJluDXMHSpgIbUXp13Dluzr5gy1pQe0sJQSqE1H0ANHIJK7pu\no3H1JSOmNbCswq4A8euw3FDoQkNtQ10gTA/RIdcRwtZ1kjIBN6akniBwAzfz\nK0EKGyCEcmVHfEGqzxc6v5LGCzDceqqlQL7t3MCnmoSuTluvl6uCvnA/YHib\nY8g4c0vhUVosFKrS3ZLQXO04YpKrVc95QVKDI0TojJ/dkcZM+NT3CTxu3TYn\nwoCbP/kiD1iHzWlbxCKLW9QCDH9JZASfIyaLw04dVGdrmYWlZVBnqT3FrD1y\nrmNdWG7PugO2UPjQ7wRQPvMQmt2nZNpDvgFIQ857UVEh37wQuFc0E7UUo61U\n1c122ZEBCffVy4gNHMA9z6lWqlrkIEddNq2B5p6ijR1ZhvWU8VV+GW2cO2nm\nT+zWMtwDRxRZdeoPB1J2lMVNtWV86zmLz7Y3p8ktLngY8RWX0W1VizDJKF1Y\nRSwxzZnvle4ocxogmz//CG7PNmr25aL65XIh0qQ6xImWpVGc7xMbHR5MxUzP\nw8Dd/WAwrFJNaIBVu5X2NWkELacMa93Rmp6QweaYA8o0Slwmcrc16APOoawb\n/cAqLzvRQPG9X4JZFaECVzfY3folHGMBORmbvFhEjvWcsPidi+37roiQ0mue\n6xeA\r\n=ZD2V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHa5JIEKgDshFDqkpxUpyDN3kNpp+pXOlNLP2gmTzaXlAiEAn9ksx1+fhFrwPNiZdBuhvpmAJkuIQQOdB2Nm1mRkEwM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.56_1615679893162_0.29685560530805866"},"_hasShrinkwrap":false},"1.0.117":{"name":"@leanup/cli","version":"1.0.117","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.10","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.10","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.117","@leanup/cli-core-format":"1.0.117","@leanup/cli-core-lint":"1.0.117","@leanup/cli-core-test":"1.0.117","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.3","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.8","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.35","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.117","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-JKaldq5mhqOlLgIBa+vCVH6ihKvKT5jg/9eMOa78XhOI28NUti5p1khf6YV4YU/xM/ujOn9ZiHqo47IqS8JhEw==","shasum":"e0564d70b67c35aac1653a0b31b4043626664b09","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.117.tgz","fileCount":64,"unpackedSize":152170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUYqXCRA9TVsSAnZWagAAq+oP/j7LYfje3jkQm1De2thI\nCvhosyrFalaLav1RkOS8JkSAb4ptoC77pbdKUoJnGggO9/tuqxCYQE5Rqh5v\naPS1V+XTP3z+4FixR4OWcbqNPAy8cZI4QTI2C1OOrH7wialDTGYAdyQ+mMQi\nUO+raT8dDzBhrQTNAv+K/KTyWRHXv5c3T9jN8kEmfZZsvdtTwhFstdJ3lMVX\nx3LpHaniMiVPl3Q8gPmZFLOmFt5cBQyrOyKvdzcfsNjaqqQeJ0FLQoU/DSyz\nPbYU0xxT0LjRSPZmcWB4dwWx8ygdQ06wTkAE/Q2HduyXSKJQWGoGYVftuPnO\nLB0CmPyvXopDJ/lrxcnH6LTfOzZgwpnLDWtgJ5+0b+1mjim3CsJaw/DEiGWN\nAoFT/vu0UgWO9heWe4LZlbTFS3yRLbD1VlG7ejYyBCBW8ipxFHiDNDlJoE9Z\nmvPlwxb30yzI7qed0TFuw/TS2wv35eo8y4Hkx80WS1rldOAujFmYqQSgepGI\nvcRaL8IhbcAU1K7NDbn9UKDxzuD3VxWD4ssSMTNKGVHbWn0tC71paDigidBE\nsz3Ldjj3USkRUyDxnV6dPyT0RvGbBr2N1j5CjSO0XmPLk5Y/y4MWJ2lBLhw4\nzHRb4mcF+Z8TAn8UG09wFb2oriYHNDvGaMnTF9uqaleVO009KUbQ73HEFRhQ\n7b7y\r\n=WDrs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEXIMasK9tpSEpKBT6LaKUmKnnIxSHmMrgGPfgnh57o9AiEAjHiD/fwRnBPPPXdDTHHdShc/RFW+klrKINrX7iR/SYA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.117_1615956630539_0.538931051486818"},"_hasShrinkwrap":false},"1.1.7":{"name":"@leanup/cli","version":"1.1.7","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.35","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.7","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-DXyigwZAo9bBDw3onG6/PwmA6ChQQyJXe2kk7oHYhio03oC9VQ1wLvs9iovTX7l5TVNcTNiw0LtY4sraX7xzuA==","shasum":"f8f66faff2919b280afbda282aaaed8b002629db","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.7.tgz","fileCount":70,"unpackedSize":142472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUYqrCRA9TVsSAnZWagAAaTEQAJR604Wt8QQhzPXqI5t4\n6ZHKwf63pRpa/62wmcZwwPXerF4p/WW9Pfdni+EvYEGOMKcEYaSQGIE1QsT7\nVooHe98okF3sGRUyEdQNht/A4EML40pu4xcb1AowcZrb6qsvrjipCMT+U519\nkGGLptUDOs01sP5x72KvB+62jDuJn4OM1UlKutaFyy4071QpmGy8GcuqmJhO\nU4I5WoNKoijxBvl29zbu/v64gr9tQPMHz4sYB2e3HXJhKPEhmuZTb/6cG3cb\no1trIM7WTKu8U6O4OblsWAIipwYf9Ng9n1sRTGoBXSzVrqynV5h2fqnY9rTA\nfOBAKHGMLr/dzbN+27G7ABfT7LtfmVxM+ys0xbftQVs7u9c6BAdkqRuC6Gfy\n91n4GYbBtnN1aKwqRHcXDkShn+8LA/tEfacjCJwnETT6XL1CyNwDveMnE16M\nvtsyNs6aTr646nwoN67NPojoYl+TtdyMPQqNExRhqKKRSLQEVSG9NVpfWEu7\n2FjdSfi+D15Kc25scfPDg788EpR5Hcw2ygBpLRdPDytmIUJwev1YaXhY9Qqc\nuy4q79n7UsZfTvA0am+YXNq30q5oXKhHbxRtuL2tJFJzDKB+lRRv5hgrOMB3\ncQuRkCzY3CbXbcOPkMXYnjd//Oy/0kvDbA8BvUD4rgz1VrOqhLsfrAMqBw8r\nfbcZ\r\n=VHCC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxtw4aY4AyS1E/GlIVa3BkUkCf1JJgjnLm4JfdFFAo+AIhAJSQJitzA51UqxO3lUgocJQFKtsYvzGhzTHoD1G4Jv10"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.7_1615956650756_0.25537813585303293"},"_hasShrinkwrap":false},"1.2.0-rc.57":{"name":"@leanup/cli","version":"1.2.0-rc.57","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.35","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.57","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-bXeZ5sXIOtK+ss34F78ZDUi93p+6V44OsiXbpMkja/bCmc2MujN/iAEBYK51JcH1itVImYEukAWfuemrbZusTQ==","shasum":"0ad14d37136de8b2bf6c0c47d0f2b238e9fb09a5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.57.tgz","fileCount":70,"unpackedSize":143343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUYshCRA9TVsSAnZWagAAL60P/Rw8Bt33CfGoC8QTHCIe\n7V+fw4F9fczxD33A+zccEfbK9PVn5ObO7s1ifoRDqKczXuIaZagaRDCjGfBg\nzRdTYAF38VrLvP83E8tzbJCqwvj/PZZTL5ahoto9hMeNe4MKmkdd6VLGHRZb\nfJrFXJdHYL/Cm95JNnF2DHjh9lbMactQdIfavtMXh3hUj3WvE7jiufTNj/f9\nBl8xI+dc+1K+MBbILmxZP/P90cmK5CBk0c23WLDLUDvW3V3vqUyP1QsG+jso\niN6ic/h08hjFJL1RCIBSNKWOuZKvEu3DPewo6guWrfu0+HG73KYO4SDDa3a1\n8Lk/pN5DtTSd2K05d9NQh0y2RMmmNCZx5NE9DywY28dWDlPYUEOFgg2K/j4a\nOtQ7CxzIi6Vq7xFgwV9k/yc6dW+j31KHK9MEOIRFVwVf8hNhBqekWwFcUFgy\nwp/rqmNzr2Xm1JowKIJp3Nj02ULdkHVhdskr2FNO870L/BEIPQLQad3D3XWz\nff/73aC1rdx5kwSt86bt5SR5s8sxiW1sLsjmXbsELuwF7b/cx9TPRmmIM9Ue\nRcRXymSHeC6qVCkfq+xTqvhC/n6qc3C0AyT8Xa/JNOnx1uvQ/ktMu0RA0d74\nPASl8nKLpqRrcxfF6MVGMd0yI2EnQRKzctJ9fYxaH6a25eVAk4/k3lPHoSur\nkF1L\r\n=mlhe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRE5aRrNe5KTn1X35z9LQeLLKZ7zNhS88kNkmPpIM5aAIgI53jCupJ5x+LQbsOyEZhhYAwz9W53rPSRrY5Mr+SPRw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.57_1615956768625_0.6648213965181982"},"_hasShrinkwrap":false},"1.1.8":{"name":"@leanup/cli","version":"1.1.8","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.35","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.8","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-oDVt0BwX8bHYIsJpsgURjdUhB+po9CLSs4EmFM6MX0awZXznPDv7lHbG1NppJGLFwXr0x69e5mBEgH6aordebw==","shasum":"9a6adff65007a021bb0f41f6278dcfd70ddada93","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.8.tgz","fileCount":70,"unpackedSize":142472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU3UOCRA9TVsSAnZWagAAADQP/jW415tTip46bxN6Kfuo\n2+ynvZL5Ut7EoUS3VhiB/Lq9y5kxEp52byxqNU/MLEqnPRqeMaxzjH5EGjHz\nubNd/Jumeq/MI4KAJFQFBuBYrZKtU7lWB3lxoaTjQsYXw9d1vjJ2RILTIrJu\nyw2erMpedlUJfRlLRsbveEcr/yifUGNe/EMe8ODGMKCUsq++4E4OSCNbympD\nlq7Iuyn/VlrUW+4wl/tRQoXkpT5j+9qxjDuNEXAj0IzPtGOqvJ+wMFr7sxEh\npAJhIDY+r2Hy2HOAHdFW0Qy73P1zEWXpnmkSQoz7i0vQZf51pFDD7SWvnZq9\nRq6+jLTU/hB471gs0gulMx4hnP5TGmTQMUx/G4WrRY+f4aCZqUHmQUn4ieV6\nhKWKhGfwhhu42R/ls0tvDe0I+EJzT8j/s6waG0+cJYtfePln113lSnwaLpEJ\nU+0ik6sxRO852o70pqrMphF+8ZvQfpEXFBOa7tKAFGr8P0QhKl/dzB9VF5tm\nx37I850C9LFBc53baeip/8P9Nr2j02cxvKr8zNqo5SIP4ZFwhKfWwjxIlOL3\nVxq5//nRa/Wb1guDCE/1fKK88x5hVzEqh4cI/Do/QAflNCrbZKRadlvS8Yq9\nWLTUmfQxnhICRWKw/fSmZ7GvBjnvK8YIRahV/DcLzoy9pW4h1FufTzlHd7hi\n+HSu\r\n=l8TI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHhRJVMGCV0+PLroGNFqdY6HBaKzNtD64NLzMf/NvkpHAiEAv+uuhY9p3NLapRDiwbrOAwu37hC8WSco6VeHZ2NbcXQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.8_1616082189376_0.7864043242100585"},"_hasShrinkwrap":false},"1.0.118":{"name":"@leanup/cli","version":"1.0.118","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.10","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.8","@babel/preset-env":"7.13.10","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.118","@leanup/cli-core-format":"1.0.118","@leanup/cli-core-lint":"1.0.118","@leanup/cli-core-test":"1.0.118","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.1.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.3","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.8","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.35","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.118","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-Ut9/GHRnrihh6haL9ItXnV/VZlf3nqdffp2A2WjDnk9Kejoi3+Tzuytd2M8GBGw+Vm7d7WJzpCKTGzwtHPb4ZQ==","shasum":"57c63eb0cec094abf418f0741cbb076de0e011f6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.118.tgz","fileCount":64,"unpackedSize":152170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU3VOCRA9TVsSAnZWagAA3woP+wWUaEcas8vH0EiukK1D\nL19CvDfaknlxYReNRGHAlZMJxQJcZN11SANUCZC9EjchNMiZtsF7Sne2gx3W\n5gi5gjsaC/ieoaQSOFkNWxgRDT6KKc0VHt+C9juTmzTUrc261NpweDrSxkP5\nTy55oGSK3eF1bViXPWowhOuSVUcECGLRoEhJuOes5CS8s42gN/y/MWg0UhXI\n/DthCPFA0fWhJm/+8tEpkEateVizalqNAACeJbukRtcRoB4vKgkeA0M8lMnF\nRysfLTKkJxxgpTxTSCsdi2wZPryo1ao4TOzqDEyy75lzwDjaiBBldn3PNDQX\nYpXvjHHcFkXOQ+AytF/mJY5dGZyzFSiOGzhezk92RsJe+dOsIniXvZK3tB9d\nP09seoFVd7E6Ti/BE9Vfsb4N4SHbjZuPo13L8GUarETptebvfN8Fsasj9jpJ\n75mFUoN6561uz4fxQJCOSZE0Kex1URQTqjTBxh9DkOmUafL1X/tBNCH6J9Ve\nBDBpuA8Utixqh2W6P2hz2oU4JUp4hxWmZDi5u4nPtMdabdqJADV4J++II3Uz\ncHRbhHZno3O2sCM9MdHUSqnDnnFBJzXHm58C+w9ekHmqFz34IUj3pq1Xv0TU\njlvYF6EeyiyGd5Zxedy2f65bVkAMx1woW2IGUJWpdZMuB9noU9BQyF1KeSIy\np7VJ\r\n=elgi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGi0A8qBaGBeJXWu9s8WdnzawqNLO5N785EUne6Su8DNAiAXYohWe2fHGPIN+UPGA6QrOnDavo/d92Llqfze0Ddm1Q=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.118_1616082253690_0.22319418823271509"},"_hasShrinkwrap":false},"1.2.0-rc.58":{"name":"@leanup/cli","version":"1.2.0-rc.58","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.35","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.58","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-DO4QhA/d7D/7uSja1TffZVwAMOvSRgKTocexbuutHfYjwyUp/4rwGYn/WiC9JmfT3cELupD4Da4CT5pi6Y0Fjg==","shasum":"ec4b4d64b7c6f8199cd850df117968fd8332349d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.58.tgz","fileCount":70,"unpackedSize":143343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU3xUCRA9TVsSAnZWagAA4ZsP/i5pkzRPrPG55JKIhOpy\nlnM7u/n87gQOkkHgjyPTRr0FxHnJErJz4wksKFpxj7QFRXookcQCbBdpDBn/\nNCgBQ3yLB3c/wen+Ey4ir+JuQpHMs8kp9DTEAJeq3qVjQRS1DvcT3tMs9eq/\nhPqYX82vqRMdVZp8nFSNA3W90kxyyTykvnN3Sms+LsHKr63Hd9UwQtLc875r\nD3Jn4d4N1fbgWvEg1mQAzLwfq24Po9BpC7vdXvr0qnO2Iy2OG7+v88ZZiGdD\nF3q9BtwOUO+Dw08rhAxJw1ZW4/wuSSnT85Sz/XIpHJEScx/VRByS08zQJRa4\n4Wpz5CrKDjQq7jRSgYLF40sbTOJK0bIs9AQoY0n1Tj+Qn5iO37Ubg+s3PxTc\nBprZ4D0n5+4G7YZlcWnBIg5658bN5BjKk5F6PIJXC//vXGoqr6Vwdh6XPwOA\nL/Cg5/0p9Kwj/cTKM27sWfWOyOtX/yaDnYhukIVEvNMhp0HEO+2os9SBE63X\nc4RNKMJLc520iF5FOlNAORVJxgT6C/OGQdgzL3qfJ/bD9HuyY98vMfp2qTlI\nV4QfoBdlLUpZZkBB/lQ8gtpj79PdixyL6Uvac7y0gXtjF4zzK12dKYhmZMaF\noH6dvLVNA3RNuXZOoZGhBuJ/e9I/JpjV6SPBMiOcJXJmZRuq9sVT/TynP6QS\ndo/z\r\n=N5kb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyLVFALJHreakiSv+8IexebCpiin0WKbLGpq5+NclAaAIgPd+v87M75dWtKEor/e9Mdw1a7Cv2S+XRGrpgf8Dj1F0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.58_1616084051603_0.0063083035797855125"},"_hasShrinkwrap":false},"1.2.0-rc.59":{"name":"@leanup/cli","version":"1.2.0-rc.59","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.35","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.59","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-iHmK/oR0nH6Ag5r18uQv0G6BR3U+aVoFlaZOqlbsNL5R9p9q6w9R3mixwkdcHZpBML7F/DTtFc/aJVY6N5nPOw==","shasum":"3539b74cd674c15f07a21cbc306bd6c409812c54","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.59.tgz","fileCount":70,"unpackedSize":143389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU/DSCRA9TVsSAnZWagAASdkQAIyILeA/F7qNbQ2iHtDi\nTVeXi3P2XJwwFc5EFWzrqIAcORxJeE56vw9MEJqJ/q7GWPxB2UpzvMq9zMGQ\ngHGG56j4iW2GZJVEMqr2J3F8dCvZ9ATWIf4SN9bGHTltfqLjOpsqZ20d5Xu+\nnERjbRnjCo1jx2MlFbSTEmgmv2sEe3oA1fKiGnjxiPRkix47H7Ss/bBLcuMt\n62vBFmu4bDwcHauumI++FQhiHDyp7/tg1rqdU2PUtzw/1Qxj1Po3iM42OYu8\nGC7TR+AqD3VgIwgWMUKkJeTSmGABHa+Jllg5D2DcLT2Anvjx24q2v73TL516\nSP9DjsEjrs6KU3Vy+F+t0wB02agTeKAUBdw+nCuh504yQwtA1vBwjYmU8F18\nKnnjWE8Y+ihxEU5HzEpWAGaXuSHQqzQmzI9UAFbcNAYkorW3w5ki8ZbsJLDo\nHNNSjJWdlMRPeSMs+EJyMtM63ob1mPJBBufEFaCxZk+EOV/0TxRB8p84VOEA\n8lEjHJehrHlL/AwE3ds8RfmAbGqhhubCbPHYZy1NWkG/4aVKpxzXQwtpfT58\nM3yFxbJDQgcygNSj5gFdKQJQUm7Oh2Hj3bUEddAtsh5O2VCTXNYyhxFxsn5u\nC3hiD9vSIEYR7l4mG3w6vAN+ZhSzmMJvdBD8ZH1B5iOyctFBeoKgsFfqdFJW\nG5Nh\r\n=fGCK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEQLMeYj/0bq5kVDyL8J0t/wBfqG02Y6WZPSKSCX85HVAiBRSvEZvBhTfgCQrQipy/Sni4qM1THvvppNdWoaqrikDw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.59_1616113873561_0.9192337471180665"},"_hasShrinkwrap":false},"1.2.0-rc.60":{"name":"@leanup/cli","version":"1.2.0-rc.60","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.1.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.35","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.60","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-D0egTVj8pIAs3PRWvfO8YV4PpQRHWMdLsJc1Mbm+dDCmEum/h2bWak4BOqrVf/+7YEe4J/BITm0LE3RGkkPShA==","shasum":"be77bfa61c74605299052185d77312b9e6bcb326","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.60.tgz","fileCount":70,"unpackedSize":143389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVYbRCRA9TVsSAnZWagAAlMQQAJa5iP/AVXafm3o0pFT2\nAaLD2ED+KS94sAriNApFUAr7DiRXGhQ0sasQksZRW69G2g2824tV4Xjx5cl3\nzYvc1WkaB59Jnm/pPTAd3H61Jj7/60XRXZ5Lpf+fJk38Q1wQ7qOI2PiCz5VF\nA9tYYgdnpuXhJIGkPbsitmty/9GDVdJuYBwAhWUtFzFm9icubRivr0Gt9DJ0\nkk9C1YcIm2ARBmXZNIw+wFQpQQsW57WwZ73+ur+ca5T1clKneavh9lg2h/S2\nD9PxHWbkq96498AtZ/hC06lKXoX2gKuW7CeOv3hHh2fjNuzm8wNIhPu7FRsI\nrWyk1P3DD8lVYqh3BLar2Uqhr5vG3r2mK02l2n5IZcY7Gd41oCFfDO08zUn5\neev/f2YuCGOTSj7A3Gww9wdqNBnEHdBgFkTREo3wd33do1IjSfn3o5JTmfGt\nPTPp5MHKr+cvnO22EC8TEpBVhtCd8AEvUzC7iFCL65BxqHIt/NAZ3P9XSJyu\nT3E21Q5r9p0i4w9zg+RKlDrt+4/+rIWJYflA6ZKBZsYR3r+xnSVO8UFmTmVo\n/xkYx6idXjbfnCOYt5x9eJ084wa01Dw/S0O9G/MYaB+hdXQEg0PUkB5swjdS\n/6gOwg3V6UIjnUdUXKqnoJ9T5p44TrTvJoKz9UNAebyhgaVstaIfDpuQg8A4\n0zwM\r\n=nRtm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB7inLPcDtjwfe4xhgMq/4KUhuGCudNMgIg2yGpaZ7AbAiBWC9PbP5ysX8lDpXD09bKS8lZ3Wju7qR+1pp8dvsLebg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.60_1616217809092_0.4246743440929601"},"_hasShrinkwrap":false},"1.0.119":{"name":"@leanup/cli","version":"1.0.119","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.10","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.13.12","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.119","@leanup/cli-core-format":"1.0.119","@leanup/cli-core-lint":"1.0.119","@leanup/cli-core-test":"1.0.119","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.1.3","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.3.9","postcss":"8.2.8","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.5.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.35","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.119","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-mXzIAMC93RpsWMZY4+E9Uz9vMs9U0Gs7ZdFjngGVxksc+3gQ6ioHDN+GwLC7mmvbVnt75Ve3ZXO2nayRpoVPPQ==","shasum":"2f907cc05ddc7d03dfa63c40514e8ad050be6bab","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.119.tgz","fileCount":64,"unpackedSize":152171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWs5/CRA9TVsSAnZWagAAoScP/0L8++QbPaMkjnKw4Guw\n2r9NP0N3fCFSNWNp0Pq999SLNRjMQLjKrYMnqG7rLxWxm5n/dg9r+yruugI1\nRlEZ25U2lvxInirYKPkityWqNC/iDEDzQGLB2QZmEinLtP8MDF1pb4NiQy5A\nxbtM8FO5QNI/OpQB1UGou2sHgfSUt+kYNTZQJSYUTQEQqcPeKvPsESE21Hpt\n8FTk4W/8my5fH3ka8Z52dCINJpChnY58BgJJhmNAFr4WECGUQvXk8t6I7ev/\nsd9KEMLhEY2c+z4YILV6xI9kT2exhwkCh3233fh1i8Hnl194anHu8b7AnNiV\neM6U5I8NS4Eq4bCxXt8rkN2/+zJ7x7TlD3BUueN/vix2M1F+MD7W0lVVX/Yf\nsTMWd84kZ+DZnWRlUQhAeH9xqKDRzdnS4ZwPYDmbRL0Up0B3qeZHRQwCYTXu\nSAN+Vrj3SkIsXMsNhZCU1wCNJcYZqPyf3AuLXp1NVj8ICF/0Z87UV/hDtB/d\nrxvGCzngtAtNZCci6wqs69HbokkQLA5As8OeXp/voP+K1g+/YXK0GvXHQctB\nsDStnHEoLU7mPtJAX9SzZsFw5NwrhGr9zEHTJQ+iVIUsy8SIrxtv7IIJndhk\nshQJ3dK7SzkxGg4WNrl6e23sAcTqrZBOrVvAn3GKj3OileBKbzocrwzUwU27\n5GJO\r\n=gBl2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+HGNNN81ZxVbN85DkipKEIkMjweuFkkexhXEX5cwx0QIhAM+T9t1bOy6J/IT/2gVc/Z8kLz2eYF15y+paIgeUDOKj"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.119_1616563839522_0.16300827043113353"},"_hasShrinkwrap":false},"1.2.0-rc.61":{"name":"@leanup/cli","version":"1.2.0-rc.61","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.35","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.61","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-/rtcB9QyaXeGRpOtKOySTiZrWtD89m/sq2nKHWRVleTMhAwTH23SdpMubhTm1+f5MOJYdo+gXwMKugd+YoXhtw==","shasum":"8b6cc6f6f2e864601f952a47d4b9f0a4715cfc51","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.61.tgz","fileCount":70,"unpackedSize":143381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWs6OCRA9TVsSAnZWagAAoUoP/2vNJg6ESgDJZrKUJ3/r\nBuMPmV+P2n4GNjHECPvUgAxABr0bPO6u9kZxVp5z15Hjo/Ve+TCmmZG3QwEi\nUu6bsKP6zeSels1/8HdSVYOSZaGq74InTm7kLN+wgFq0/iEMH73kCdcSkFGp\n7zPUiOzHVBtfmCRim9R2810n2+RQHA2gUZo0MiXuKOgsrNus6EK6EcjMtdmI\nFXFmSdPWzzKPTJxQSsE6e+I5os8QxhiXShQGwHD4QXHgBLqYJ51VqwzeCgok\nySXRxqrD/86vQqfOVIxiMvj4d6LLIXIZZnEjlsGs72t+hQgVTr2awBEVTwpD\nihCtwv4HvHkIhH24smnpY6YrWdsnxcKnvm3/DMdnmDyl0vEsj7/iL6d8j66G\nnCocCsH1cmquxbUMCZBuG+9gDuZHy2cQprXQkABXSZOKX8m4SwUI6DP46D5M\niAnqruICVYrBHDaQeaVbAJOnSkey8f+FbAyibf5/1yzUqstHW5X8f/s1D7ti\nt6zDeL4wCW38lpUocfO7LcEKrJpjBdRwxCNMhqZZsTw4EHCczdD4aZ8rCbCP\nzo7trkfjITXW17FuOMUWoeVNvcCrpcgquJ06m0o2cmgW4NmkBpYvSSE9jD6G\nWmv/A9Uxx5o7U5cIZ8FHHPkwK0Lpq5k7KeHdN4kkCpjVS/bkMrhHKWx24j5Z\ng4h/\r\n=E+ok\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrr8MavzJztCM87T3aQ5BeLK0j6npQ9TzywlIx7J7ZUgIhAP6HNVD0Lb/pWiLcTBFgbc3qQ5asGT2zy3nJufOgApV/"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.61_1616563851534_0.6334923103170693"},"_hasShrinkwrap":false},"1.1.9":{"name":"@leanup/cli","version":"1.1.9","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.35","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.9","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-0BZLJOxHvnEtQ50kiKypWKywMEXAjpB75lUBwrsufBohTFNFNWe4sujiQKI/MRxbgrGOkm3hLmnakh5FD6Iy+A==","shasum":"5e1070a8e84bab582262de16e90fabf21132d912","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.9.tgz","fileCount":70,"unpackedSize":142528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWs6mCRA9TVsSAnZWagAALIUP/1Ch3aGUvRuqCdgyv4qb\nwbFBKb4FCiEfeaUbfkd/YDnda1ENJJAm2eRmW/3p+SIcNlshlrN8SbKmkjyo\nQjh8Azwo0hd90UspIQp/GZIT62zzMQG7i43ymIm2zFQmBZUW8wRshJ2q2HYE\n9rCkNkxdtdwwFR3WTdiDgBWHiCZDZt+IJkAq1CD2mEHwCD5fuyefb+TpOKFB\nqZyHPbnLV2eKhafNtkOkmCWLRYmF+z4v13WazWhjJeYwJ2SevNL48bCR4imi\nateWDwqQeXE2O9Ju0GQyimRwpk0BNVSFnuKl8gIUBGaG3SLIrm/yrSPDba1u\nswBR3ks/m7whkdW5AwY72HjS2xXmoBJ+AyoVTD/IMfeA8Ze6/Ws7VxSP1Ekf\nFVfJUrWjDGusQ1DEfARkAbmisRFIE8F62b6MjLDYbKcR5rCUJu4Syc7lQheH\nf/CoWe/jfJwPqc5+RvDrjLe2q2XXBlha81VO94MCSBUOn7pnn6DH81Y2Ikf1\ntetLth6xYEoBzm8SzcCjcuPSqKp3NPvBYt8VekNupTM7y2Rai4PMLzCmu4xN\n9apgk+8GRaFJBDAaKkdBc9vSO54HqE/hw1gVlDq/9XbMY6gLVNNNFbqiE9R1\n1az1j44NeexhTaWVck/adL/qY4Pw4mkwoO4eN6y3MFHLrn3T/mIl87nVZJcM\nnyp6\r\n=3oGQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuTUaBx+29xpNM45CaY5/N+l48i2umrVAwaNLb2lih7QIhAIwBEOpIi6n+sv9jq8zP9RkLw5NWpI2OuaUJPe7gKtCI"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.9_1616563878234_0.32881993686195665"},"_hasShrinkwrap":false},"1.2.0-rc.62":{"name":"@leanup/cli","version":"1.2.0-rc.62","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.62","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-oIYmBEOtOPE9UQhyk0H25JEWjkj3V2rVAXNaKh9yKD+wV+T8dMOrsFCAZrcDjMuSJjKaI9SUOfvRCH1H5tBGgQ==","shasum":"f1b21ffc91f3be7c9adcc4c006499efbdc5902bb","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.62.tgz","fileCount":70,"unpackedSize":143390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYjHMCRA9TVsSAnZWagAAGUwP/17qQ8nn1E0eDDjaQu5Z\nzFhYwjk5wZXps6aYAKhhc/CL6lMfH6HdC+ZSPElkmx+F8qEgjsCaZaorNeVC\n9nDr2yxzfnIx1PFY1Cjbn0Vhy1v+KhEM+DX5RcKGp8lPorUNNMylaWPb86PC\nRriTe5ryfsnPuMI4LQlQn+gMrc6QumWWr93azS5oxPORF3Lo1vwUaf5DETxX\nd0ldKDjG7NIB0ORBq7NgMOeIp8Gwn1Gj/nBV33ZCuFlHJs98KLkeSKhz9VuQ\nZvXxYzs3vGLz9efGVNUi6H9J6sbJoyqwTZLHTeTQz95ywJi8uSbokQCww48V\nvxXUexh0qywi+EE3JbGaKwp8MJTbsZRs1tAGWNSgYCZHKwTIEJE4cOtKuwqQ\nLwib2jTrIg26OxJ/pkL0c9dGU7lK/DyoPcX61fbAUwGpyGdEDHuSxJzKLI/a\nijwnADRy/EilcumS83VmVTObPnFfPInZZGKKLg82/rzGf+FtSakbjlBwEfHo\nQIqXaeb5RFcvE1TUi4d4g5QUw+ylgHWWPhIogdm2e++OlTxlvv+GSkFRjaAy\nh9kXtsmUTxLADTCwNQ8ABaQdH7lv1rJRUJXzGfIwmQvzdmNyWaIfwrqiiGM1\nyziNodph8uQFwUZ5RIgP6pXLPo6TsEJLPx4KuVsfQYahiUeziaDjV4ZRFjIm\n/Nau\r\n=RurR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0b/pa8G4YpFjYaGCznNQ2z2K23KoLd8k3nAV3vFLFXwIgVdZGtzC1HfLU5TNS6JWQCTneHM8ij8kbsnlyFjcpVag="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.62_1617048012300_0.8469118723951137"},"_hasShrinkwrap":false},"1.0.120":{"name":"@leanup/cli","version":"1.0.120","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.14","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.13.12","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.120","@leanup/cli-core-format":"1.0.120","@leanup/cli-core-lint":"1.0.120","@leanup/cli-core-test":"1.0.120","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.0","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.4.0","postcss":"8.2.9","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.1.0","webpack":"4.46.0","webpack-cli":"4.6.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.37","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.120","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-l6M7B5OpyPzjoRbg2jDx8AIRSklN3O0aIcLpWNG8mdgQoX9NmjLcHpyHzfGYafqJqdAqSULwqj5fRd7bCBV5Cg==","shasum":"a8b32cf66c5cd85c44d9e06b771ceef48125415e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.120.tgz","fileCount":64,"unpackedSize":152171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZAMWCRA9TVsSAnZWagAA3g4P/iSQq1mBDc1zlr4iwimC\n4PMpJEihRAS0E/QTp5QdLWspZYMDzR29H05rbyf/VlcBxIRA649soz8sIN4z\noA95BBT6usOMk6iJQVPYTD9kXu+SMT/ewjETwLpn5x2IXJalJrR9P4kuw5Hm\nwcZmDGDVMowRcE17t4l7h6SxcuJffFXjxRAk7F8CD0+HoI4fUbX+AMo3JPv+\nUEt2w6gQgYCxTbyLqYTB0iFK1vheAAIx0iBKx588dGkBzNyJNRGS8QWIszzG\nyfLMPKt3tfWTBhhY2IdlVPPj8goACqyEQcG8dTUX9zMe/xowMDxtRpvnCrH5\nLMe74u664aTF7+HJJjqLOS23OfEFVeiwdgo5Rhsbg8vLeFscItbn/fYQgkYZ\nekZD4XIvIDV/p1jvBTPBuoIYa4RpRPy3DOp8n/exv+Ogk/9VMUvXt1Y84g6g\n9rsK3boa7NCLtZqVbMlQxdtefwQ3Fn8bv3h0d5rt4e3dOoXxyfFP0nDvmOgH\n2wm48ttBkNFnhC4qqxiZ6ZOnac0jp1rUNPxxrB10Z1YDMuvv8n3lC/4aK7XZ\ng9ev4KrODUu09CzXQ6FPMazbmGwiSuyTfSTUMj8ADb4AuWiaZ453W52Qk5lr\nZuqU8oTSpqSuu8Vvs4kSrstgj8M+sf3iKANKTt1enUfk6hx+VkLIPjRu8yUo\n/KWJ\r\n=AA4r\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNksjU+7h6Dv+7HnFCxpgt8XiPHUPfyvUfdUmhGf4PPAiEAmFtyyVZewcQCb2uKBbWj3d7mDRjCZ130iohBF819sOY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.120_1617167126384_0.21290552353313497"},"_hasShrinkwrap":false},"1.2.0-rc.63":{"name":"@leanup/cli","version":"1.2.0-rc.63","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.63","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-fpgx18BRVsnVU41QIzdCt4H7nZhEOFnHcOxFM+zCsHVIVDpbsbxfr05PpbRBDz24wd8lblzKaVMCtQIsWW96lg==","shasum":"1de3523ed975272032657bfab73d7935c1549a2a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.63.tgz","fileCount":70,"unpackedSize":143382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZAMnCRA9TVsSAnZWagAAIYoP/i0BI6SQT47a5u9f6Tuz\nKFrjssFxJ6WYF00jcc3ce0uouw7d2zJJr2GWqWqKUSj0iNXnXESCgqrsiUFi\np2dLkfTl3+UB7CBwgG66LZlOysAW5zR6MfGJKsiycluJC3KI+zWjY8qEkcUP\nPyt3VZvklFhs9k+PojyCSIpeY/p6mMY7pYcGDUKnAIWLaVgCCZj9W7QjImRy\nRHD5ctgpa638u3SolI8LIQxOE3Y8IHQiP5zEcRSlhzkhfY5Baa8OuidOgjtL\nCJoKabrv9FOJbd5cW1sKyoT+FC2ACrLPeCq5+W7jD7AiuXz5HECe+9Bh4lhK\n7Og0OFy5TYp6gSAn5OMpM7IV0c/ZK89wVO5vpQBQsgPmpfbwK/bT90cviqmj\nyRz0llGZm5j/JMnGBEimvzeQLWUy59bnxneq30PcawGnKEJVcId+uUWsXjZ0\nv3nemA16rsyy3eih76keT2YkGuY8BOIQOygw89EIjXdApYo0HLRH6ZA5LR1v\nWZssRrmfJmSQ7ROYsOk8iuGxIF1GvS7iyIK7YFjZbnTL8dAKmpYOROOofgif\nZppRcbTaqPaxase6vvo1Xs21D3UwTOzHWaRVn1DhATuRd44D568bPq/kijIg\nUpXwfGi7BynwTZfridQB7qFvi1KPwG781CAEYBr9rxowzXZZ22QMLkd9Qv1V\nEhrZ\r\n=7xeY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxH50MyTy0l1nIK5hsDoS6Uu0xV2XW1s4PnXNrsgfgegIhAMljt5FW+wo15g/erXqD1Olql5S+uA2ziUm0LZwjIsUG"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.63_1617167143344_0.46351687986794166"},"_hasShrinkwrap":false},"1.1.10":{"name":"@leanup/cli","version":"1.1.10","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.10","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-5oyWHpM5knsS2qLuqetiAzvJ7bMpzhIqjsbbzF0WnkXHgDVlSs5WSluysGJCXuTzZxkEq0hM+/l9pZ133jCC8w==","shasum":"f471f959e5c06036f840fb07d552d63429c5d184","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.10.tgz","fileCount":70,"unpackedSize":142539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZT7SCRA9TVsSAnZWagAAs68P+wUUcehKEsXQRJMhw+Ft\n6kkHOTCzf7NXwV8OUqc3cH3Ht5+ikSnDbJuselrfrnXrKBAhcjStVstk9SmI\nWK/QNnscyazwf4XxIMAGjExJFETu5ORE8gSdGaAXlpWFGV1OOnhm+p1hmq0o\nyxTJMFUnprDROjpobM+LJzPLoFp080XCd8a77Y2sbCh5nwNo1L8OfgaJKTGO\nEsQfJkpiSytgLECr5L25igbRWD+k0jqpDYiw8kGeIXOlCCGm/0biKKtoD+L8\n7atbLKMhs9Jwok2Rgd8GCrEYCMqpamcVjgL9BRPS6QRtjcD41Htt4Ays0WDk\nWU8eYlxmRUOeW0mf6ZXqmBqGCZNz2lM+cKZbclxcQRXEWzYUs39SNvDPNluP\nWklCWYMM/ntgwFPMPc7d3P+DpR438TbBT/YO7p2YUG0/EcMEpwQx0gqpaPfL\n8sxvRedHl6Y8vodcJpfGcpCn1OSKo1CDa3S8zIQcMKOLPZSsKDZr1qIyE/ZL\nLPHTmIPHceOD8qXYusl7Neij4O6y7SE/HNWGDA9YJqoA3H3ryrl5Ch1CWlXY\nm1gl3rXpXSS6r3HE6ESOF/r55zVvYsOZXX+aB7BxgBs0cAByPLcFZx1W3OIs\nIEbAqrOBOsPrTZHYcBznRAnOKRPeuOUjKVcacDFkRhiga3YWVEBu6CVQRVDb\nqsB5\r\n=x04U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDj8i421+t9QNuuizS8/+1l8fitUU4vkWzxDDYkjrL/lwIhAPH8a0C6HtrPZLugOEZhZSVuKg0pS+Q7WQRgWX8GlWLW"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.10_1617247954303_0.4547140907899949"},"_hasShrinkwrap":false},"1.2.0-rc.64":{"name":"@leanup/cli","version":"1.2.0-rc.64","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.64","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-JsMZHcArb5pSDWul0HMnj+0g1Gs69p++8o4bhYMxY7XwykFEcJ6Dk396rT37o5PXlwqTNsTXkDd0WY4gMEk5Zw==","shasum":"38ca4262cf5bc063daf956d7a8a5678de551ccf6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.64.tgz","fileCount":71,"unpackedSize":143481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ3tICRA9TVsSAnZWagAA5DMP/2qGknzCFlsKTsHb4UQp\nK47GLZtmme21WgTySNAf6tATmJ7Ctpw2NsqobMT6KAjxAO3fcpukyeRIaH5+\neVUTE9yuQa5+Y6UelcEIpFdt5moTDTd4Y3R4dJx7P1BL5VP8KaGN+bg91pg4\nEn7gtdFYTzAR3J5styXzZLRhwYsmhH+xQseE226beUBkQ1074v+RSSAYNySm\nRbuLGe48e4OzKgrK4fzDEzTMEmNbuytjkn1SF1RwZpJ5sYdBaZFIoNL5zDzN\nfqNKtfntI5J142WfdbJa+QKsP+jyn30OT0n5HhN2NFo6Yghn2r5l3cLqGJ0Y\n3fhUEY/3llUH7j0pqyr+qaIYv/J3TIOR/brftDcFtZeeqxHXkaqziebcg2uM\n7/vXVs5jGEjBQ2yukABKOk/SNDIbsEalHXoiUqJbHffB8vJZZoQFnHsiecBJ\n4muv3ulbozvTHtbNjAYBMErksElDcAzQ6FEh8lv+NE1do/iwa/8/KTUPkBkd\n4iXNrqulTaAcUS5WFO7KcL0f9NxSdGr8Ypr+ILj3uo3gtaImUptFfUzTDSeT\n6UWaMjghpcfYCUW1p8X4G7BfGgUMfJCfoWJ+YQuG6vZB+/vRSL6akK2G9kwL\n9Bevlm5hP6Z3hMf2cSyXWiSD9EJb+NJeUg6sUBwNC4lF6V9zom1ef19gYqAi\nEM8B\r\n=bZIf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqqd9q6nqBDoeLkjPSqBMXvhlbxRXZ08OgxGD4Fen9sgIhAIB8S2pwxELzBsa7vSnAUbWLskN7VVlQymVCnj8InhcO"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.64_1617394503755_0.25573541524886645"},"_hasShrinkwrap":false},"1.2.0-rc.65":{"name":"@leanup/cli","version":"1.2.0-rc.65","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.65","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KsiSMjEx6kyO96osQZ3PGkX8gblXyj0rkL3pphq7hlpq3y+mozvNGZkbILI2qz1szut2ckIQf20rGk17ENVmRQ==","shasum":"502bf3d135a24fb3e377602d43f96991200be5c6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.65.tgz","fileCount":70,"unpackedSize":143131,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ5z/CRA9TVsSAnZWagAAexoQAKC+pstlWyj9H+o90YX1\n/woECfup44NeJHuz6bvjBaDhllk9JHynMNOZXbv1ZCZej042RHuRGSwyC4MV\nywHzxJY7W2yjgMvSnYA0if0PlXO2QigFwaPLc4tfKoOKth3lONrdXFf2tOCM\nIjtlgPGmOpylnZK2s3ouzf8GcQOI0gZprrCxO90ji1dC80+Supvtx6TfTNSF\nYtOc+TuI4IBSxZ1ZMs3aH4v11SPcAFZF/mqcvw6aTqcSIzGkMbJ2iTb69J1J\nl+bmQo+fC3yTuiodWhaGmf/mx401U6ZeAdOsoHo9VjvBvRms2FNWYXlqgC8t\niGrjbILG/9jRfPxZ7lCbFQzU9SpJLAxNetLlI7Km4zoAV3MLsR6kKyRC/M+a\nxLV0I4s9RJL3nw6LZU/UFxJUfikUFX6SIzs3uz+GCU93WLXTO2WJlmVUi9QN\nqhGGxjgxmYPJy8A3SK4Zpd0HnXAhw8E/zOHOui7DIr8BTRrkhDkrCzm2v8iW\nhm2O5XDx3/XXMNeigfX9orq0wLSMhMhl6WBTkNSB4kjlfOSAQRZm4ncgkZyp\nM/eNtKp1cF5MeI82WtoJsh+2DDRz1XhCsY6Ea3pKR34Z8bo5mS4v2xZhBbSY\nI+8IhFCrBAKUfuYnmLoHs/dfK1hcwd1aukPh/Hr/s4vShI5/MhTaFTk43l2A\n1WHM\r\n=C63F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUt7u7D8ibR0N7zFiMOMoISiZeVsAfbP24Z69z85p9FwIgaUgtrUJbgQqks+LwJ70nC2apeR1FrxU7W5XIYmtkGus="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.65_1617403135344_0.5061404208694833"},"_hasShrinkwrap":false},"1.2.0-rc.66":{"name":"@leanup/cli","version":"1.2.0-rc.66","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.66","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-jydDriAipu2ct/NAw0Lno4OKiQ0+l2G6oKvxW0BaoD0hM3u/wpk+oDuILh9LaUPiAoU7H81svba3B/e0xoSMeg==","shasum":"e147a66d8256fae13f0ebab7c706b15250f1bef9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.66.tgz","fileCount":70,"unpackedSize":143259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaU5nCRA9TVsSAnZWagAAoBEP/1kfUiGHJ8G0jr3nN5JO\nz1Waq9lrYirjFKz5P3bZWc+ylAE5djOs7AvvwQunXP2YIek1n2FQ4qcLUtkz\nFKCyXjUkuRSYbtr7UD9gXe3Kpa6qJTQh9yTdz5vlRrJbj+WVEnK/eK3XjPzN\n84Uu0inkgTpHc7O14DbHQk9taavqGavS6DArVf7FbkoiQ+7Sp5pmu0BFiU5O\nDapbjESrHXQ6xi7lRpq8V3XgXk+GRHS/wZOmNdJCQhp5XmXg57uMLtvmn4ok\nTJn4IMVVcXg1RulB4sNSW0GbIWxstdb5yO273fHneUza4EOY1w92hTKhMzZl\nwaJ19LXWBngTU1bPBmshwzK4uKQgxdwgS0JJi68xjGHy7+LHHB9uncy1IH7Q\nK16ps743R+dnn7cBf5W9EOI/9E8OUpwD0pLXzVKOKMl2SflknSsX1ir8rFyk\n+Q+qMRto3RTblO1lj4KIS4I5UGkH/g/ITDHoD/Txs1NcNdxWNYy3xiX3efyn\n0Z2gcdyGUmsZ1G1uIXp/62PNUubSE0svZPHYBT6n7TIRkPJGrz+NdxXIGWSR\nWUldOxUQwyTBpvYnjqQklMAYY031F43O5SoDb1u1vY4+QD62i0TEZcZg5FHp\nTeiVBP38qFjg3SZrtYuVny8jl91lyEmkU4+bdIL/Eo3Xk1PL5eaw/8WRRrqh\nds7y\r\n=Z2oW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKtD5JauIDLjW1cGX7Fuv1W8V8RDy/XFf8/V0LwWoJIAIgS0RFPSAuXxXikiexnLjSkSYecgc4lALl/6FUqnp+UkM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.66_1617514087200_0.2851508816209045"},"_hasShrinkwrap":false},"1.2.0-rc.67":{"name":"@leanup/cli","version":"1.2.0-rc.67","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.67","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZpLiRJR1HnWylKrQ8SOWzudj7NSVMEvYCxoneXm2jpbpvIab7erNa85B8LznkUtZQMTs7FIo0jUsY/9D3x9WDA==","shasum":"08956b53faba6e39a2dfd7157a936aadea0df91d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.67.tgz","fileCount":70,"unpackedSize":143691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbcopCRA9TVsSAnZWagAAOusP/1lWcPu/GtIOmbEOuTBj\noAr7MueNc5Z1gPqlFmm+K6KJ7Wwv5CgQrytbv8SAzw+0ywkLcejBMrWdnlhi\nQribzoCY0rphrz/hj3rl0BOEYQiG0tbWw6MoYLvpP/QIRSP1H2ZYPtU4ox6V\nsd9FcK3f2GF7rFzob1UPkLQ01i3a7XkhTBDlYkOSDQDcp3SOs8h+6RbSGwGL\nAtQ3rGxyAb3MxcbwY5o5+Sp7NoZogoKXMnjcyFQ2oTDkCfVN5y/CvJh2NH7y\nQs5d1ZTApVKndfeWHRfSaQ/JYLoFWJByMIhntHNVb2EqkKcj/Sc2Sa+OPM68\nLk3z0T6fI19n+FUocb6DggriW0jUycCaBAc5eO+HxU7GOKP5Cw44ZlmMVY3r\n5VzssXUjZxxhb4qfxkpMZCqeoRgWO+tq6sBEsd0fQf8WdZQYBdaZUuzg5KZl\nvPlDoanrgY2jY436Sjj1461IUAy3r4fUGoXOaCwyXQPEStNw449vMi9XZRKJ\naznnf76jpnLXXFn5YEUovWUKXTWB1eQrQ52NYnmreCmQcXuMuXFBRa29iqwX\ngdmaVmGigPHycfdqgPBXlZypz4LDHGZgrOb4wk20F9RkgBDPVopCzXsVPX2f\njZhCwWplpHST9B8HZZ0uY+QWek8rAaddsW9gQoDXfdI7vEX2mOLIatsscmIJ\nAzNK\r\n=RGUT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEP/V2glbj8cdYdmi2kgh8axwXxUp1Br62q3TtYeN+1wIgUv7c4xgxi/eBf9KUeWTt6cgmi+9IOKIL6HEs25HLToY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.67_1617807912960_0.21165557913077127"},"_hasShrinkwrap":false},"1.0.121":{"name":"@leanup/cli","version":"1.0.121","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.14","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.5","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.13.12","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.121","@leanup/cli-core-format":"1.0.121","@leanup/cli-core-lint":"1.0.121","@leanup/cli-core-test":"1.0.121","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.0","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.4.0","postcss":"8.2.9","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.6.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.37","tsc":"1.20150623.0","typescript":"4.2.3"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.121","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-X3nozTQU0gy6bBYimY4J6iH/Y+h2I48lNAyFQ0MCMcyKLsFCspZEyJRu+vHN4ICwRhyXFLiZhbXR/7sgkoIEhA==","shasum":"aca123206b6dddf5d14ca2172428c9cc167c597c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.121.tgz","fileCount":64,"unpackedSize":152171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbco0CRA9TVsSAnZWagAAcTwQAIvWVk/9ePEeFUuGJK7n\nIrN7nWRk+lqWEdlWnV8QU0S6vevGeFXyGq1QsUWpLcweecKY4UFVht0xcRp1\nTeKoPqFgXRjM0UC21kQLUQj1umEI1GjCGm7xeNTJeuU8siwyZb6SQUo/+wbT\naXuR27bCMnXusPTDcIkGhzEp+DRhXakTtGpRFRvmCj6dJPIm0sHFCb8kxqM5\nRNqY4UFZp1KL8QlYFmhvEAn+2JPfmuo/rhCcrbqqgWaYW/BG2nvOzUOZMvIN\noLDW86gpqnz556k0PHspCPJ1WFfs+o+ISI+tHX9xEgAARowqrp8OaRIAaqdQ\n1CrG6YJ7ALxb+rKu29AjuHSlJfuT49T2Xd8hXcwegPr5xQZX7L4YOm7UJ7u7\nBmANiDHELjf/jou1IChyj40ZrWKshSW20fBDQWI84lRis7mXV3LYAbiBPFqe\nCAy5M23BcQ/BB2YCgA8tUm2jKkT5NW7C+vWRGLPXsW4fCcP/4TU/WF+ugdI/\nzotg4+fZseFAOr7mUBmyY0pvO4HNSRydkJnoeZN6QgfkTHXdAbb4VhF2Xcv8\nvxt8qKqCg6WfliRhuq/rD6XmlTZ37517RyJzB2VwQO990vStJMqiiWKETob6\nMLHtnTUNECOScCjaVjb3lqSr+8M9AGkcxYrxQr8k/hN/l93Rv6jwAXOOpvHf\n0On+\r\n=b0mI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEk4IK66g4Yn2+nq5mfg+uCyh4UunKURA3w/bvG6pd7sAiBVq48zeos+ENeyeUTLa2oJPEQzIxgENuV+9zSRJ7uepQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.121_1617807923608_0.3589222356575934"},"_hasShrinkwrap":false},"1.1.11":{"name":"@leanup/cli","version":"1.1.11","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.11","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2ZY5rvQchAupujnsYbM2T2dmz7JGg/o/SAAy0OMK+YluchsYtcIYqIQh9FNkIe1/NdRrhkKKXPK/uup/RjzWQw==","shasum":"c67ba01433268699a4ceda280dd4cf26f9f9efda","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.11.tgz","fileCount":70,"unpackedSize":142806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbcpyCRA9TVsSAnZWagAAAdYP/A1ngK6xW3CczJVrrOze\nsVtUGgTSfe6pv+weORJS66Mlhy8fDMBWDvB+CPgwFgyPHeMGOcthLMNOocdn\njCiEY42inXfpCR6N4YB5IIe/qMD7Fd2ihh2U3e8W8RkwoNfqkmaYlNRk0NtM\n+5A6f3FSaBFzEt+epb4mRwhUYMpnPJvTV3uTX8tSFJL/1OSsGpwB7oLnNjQD\njc4wosZpXDcz6JaMZYMuMWz02XfUPCEUzufjckLl4ABSicJKK5MtSbkq5hR1\nN4lbwrquqCOQHC0GuxqdGcoZ7roNxAO5YMdfsRXGEf3bEcCPdP/TgwTjcui4\nJs6HURr9dqscvTdsayYg/eWA3fot7eycgIdhCBGno/OgTyNhJZ5T+jD+tZoF\ndHkoSvY8d9FQqiJQVfqYq9XmFBEQIPXHtpKGvNCTdqbwWJfxKCPASm1nJ7gr\n829AT7Z2QvcsHdTEUNmdKN+RI5j5qK+aZTg2vAA4gZWLqe7PKdJkFr9cYQCK\ngREma6D5BcFAdiISrSc5iGkTSdNhMhIimbbc0XTPaghGX0shGsTT0xtvmw8O\nkYbd2pXP5HrLOATDq89qsKV3acSNwC9uM/QLdFgoSyj1KOiadl0Xiu46xSPa\n3qh43DRNNZtU2YnCG1KHoxqQRPzbFdXljY6la0Tdrtavj6rzujPxNTDUz7Pe\n9y8w\r\n=QUct\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDK/CtTJpoznvoygjQjZIkEQnS9uBwvQrm+oPaqKUwbUwIgKwV1DFH6UuZl8g2Mbaua8hkDicoKAoTxEOmnvMWZ9cY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.11_1617807985806_0.18660077636994998"},"_hasShrinkwrap":false},"1.2.0-rc.68":{"name":"@leanup/cli","version":"1.2.0-rc.68","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                |\n| [Vite]           |      Bundler      |   ⌛   | in progress                |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.68","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-orZTtFjBMb0IfRi6dv79/nFXWI3L6wIvvHIqbSaVvnJSewaYKaoavM352WsNopnSiQP4QRVvVfMmkfpLMImQEQ==","shasum":"1a1ddd1e3c1977d8d441ecac55916fb802627977","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.68.tgz","fileCount":70,"unpackedSize":143744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcCNPCRA9TVsSAnZWagAAkk0P+QHjSmIt4lgsH+YvLyHw\nlwl6ePSd7Tg2XO1HkhnnlOj6n7Gp89+q4EGEQ0lyfnFVkRR7ZlaSsSZ3hmTX\nEHnJWEoLFbrv17Bqu7+DJkWepEGeaMv+L+wVJpYK7MHazExQgcaHya2pruo1\nf4whhBuUp0MNInmNNDzLzn7EGzFP9xnnQ5Djk/keNyuBtEjJHCt6pCHWH/fF\n9TWwsuwRuWg1P0SFUBj4dnYWLi/hnNa7xtMCR56kTlPA5ypbtmwpv/XAGbwa\nhaC6v7+cS6IkM0am4ZI0gYgYsE25jN46K/4SOGmdXBG/mgPEutIdysYa4lHl\nAtxueiZOmSojLVMfWjtTd8bZjO5Ts4pvBlffabI+r6qR62hX6MTESI+vnJw0\npiwoQ1lBDRAsTcGidhVE+HoFEx9VVfEK2b+Pz4QRyjRuIgjUFNIU/OO52EJC\nelBHB8bKjXQpj1IZH9KHmOJtTQKuTSJ7hd/qe0Uk9hx/1uxohbEuWdEOaCqw\n/uWLoTm40skSayMxXcAD6s+mJP7F3b9xzTSmwkJbGMmIJgiTx1DcfOqxgnL/\nHe2IxZbG0IfBZ41dYe2KOO0NSfkqdOAAqo7mOeOV4QIgA68bn4IuFyx6xrNo\nbrp/A2ooRywhce5nYEJmaBUV7XqDqePTSVkN1W5YkXsNbKu1WdGXs2KOB6LR\n/Raw\r\n=Sk/E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFoI9I0gR0eFBmNWuaPY4YuDzkxq+Ev7cIFbfio0taR9AiAcK7gkK2QEXnplCMnBfuJdyc58iomcwyyPOomkX3XUvw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.68_1617961806876_0.34267429267059235"},"_hasShrinkwrap":false},"1.1.12":{"name":"@leanup/cli","version":"1.1.12","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.12","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-U6YAQZe05oTG3sp9gcxprV4jdkIoFuJIDndXPNSJ6h0jUQSS6KKlJVw6GrZh0w8aTeKN6+qrnofNbYjlO7D3BQ==","shasum":"a99c9a1bc038d740f2c2d1a587c08482b61a4cd0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.12.tgz","fileCount":70,"unpackedSize":142806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd75vCRA9TVsSAnZWagAASNEP/1AKi8kFH4XhDlySia8M\nX6OB8iPtyNcmf1OgursWd5bVDE0vXMSuK08OAxYKni5EzcYGEzOxGbwZnCYr\nZ+FRrlB9GYOU+PtQQGKI3g7pOzUS9UonP1YWTcvQIdOiWVSG5u0bK839Ramc\nf048qipGfh77xEw7Fy0xuTpwaXy8Xi5tjgHtESTSEnnJ8jdSoF1mT37kMF1T\nuqPoGbmTeObKJlKF8S6Vof4j+OWODmi4yhjVSXPeZJmUl0u2R6B7im0vVL+J\nq/+f9JPLq2cagoNL4aji8zlyI1IHvBx4jTraM8ElcdFzy2nuteBZX5hlYJ6K\nEDnzEQVEz9wauDr/EAlIzfFz8KDVlBTZ+zBpRLU4Fte9HzF9O5Wt4ojqaybS\nko0Ah3SIBrLLkBA8Dr1nEIBmBANFvU9QpAxIGMa7krvwzbhGqYza80hqyxca\nOB4A9neSS5C3/1H3UyxRdDZzB8mUYHIfK5cBjS2fe4cO4YB5hVIubIwXGZF0\nnZzkpqXgpbbSoYejcHgYF2Q1/SgJPgUuB5wRUCbtI5Xowe/v6AHodt2fmsdq\nqHnGp+kG3XBXj8O2vUze59XlSJH1qlD0eev14fYq8HEoL/003fuD3dQtwUMo\nhUgVD5yOcXOl6KPPcq+95yBiIkH241rZi790pZIQlC3dnLgKqBQ9BIN1wZXv\n5RU1\r\n=h2DI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAKzk6ojIDP4KxHxJeo1TACuixKGxc6ovznqyUyDeMFvAiBpAGb+onQ+veEHNTtyQHQLIh9Pn1aENTOl/bNkvq0H6A=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.12_1618460271018_0.869626022075239"},"_hasShrinkwrap":false},"1.0.122":{"name":"@leanup/cli","version":"1.0.122","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.15","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.15","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.13.15","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.122","@leanup/cli-core-format":"1.0.122","@leanup/cli-core-lint":"1.0.122","@leanup/cli-core-test":"1.0.122","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.1","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.4.1","postcss":"8.2.10","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.8","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.6.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.37","tsc":"1.20150623.0","typescript":"4.2.4"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.122","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2vb7OGiFNLiNDj7E4y5wRfqdgk9vTI6kDB4cCFKbPW4+ThqndKou4DTteXUj/fQy+T7llek/rEXMHtRtyZHkzg==","shasum":"6624790ca20b2a38aec868d802c4811f2952815e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.122.tgz","fileCount":64,"unpackedSize":152173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd7/iCRA9TVsSAnZWagAAoFMP/3F2X7Yo9Sj1Qpvj8gdt\nqOG5M1gMUy8Q0cDXmy3LFIxXu7/URhuxQeSwF+zRWwRuXw01okY6qDYu4gm4\nXhubzO56ZZuH1oPS2H+lIFeAfXhmN0fAH6bk4HJ52nVTTwpm+l773in+fog5\naPmhThgwqSYtmv4lNFdveTai6YrKCsMuU0Mv0JtJ2ZJcguftC7aLeYo6c/6x\nCz9f1jOMvKSnijGnJD36+kT1WXQCk67uaWixc4lPa0CBot5nttiKQflhmW+t\n/pdlMCAYmWGwYcBQzJo359cMwYZYVayrTlf90wZmAPZuT0FE1ZqPAQsJ72zs\nuhQRpkx7NQjAPsCF97+YvOqVkDgt9ua7/uhRs3nGJKcfu3m+e0IDCa+U0s5d\neuwH4oRnucuwCKLQfzocKDcEiHOGwAuzYHWto+AZn5Ptxd5rzszAbyo/jR2t\nYoGe3wZNoOAKE9471TUf+e2oVo3diN/G0goxPFbfZ4Ez1b213QYXlSBqiitv\nL7Y5XTn53IoW/s+ivW/zliVxQx0YC42F9YACH61aen9BkSstjxbyt/hZKWVy\n1FSRMgc858W1wbmMd/eUScovaM2ODpnSfaSH2w5sJ0mI78X3FkHeb63GmWcL\nw6CIxSBz4da5PjDx5EvBWfitocK6ECjYZGzitAh2a847G7kDBTw74SX3sTP5\nW2u5\r\n=chRK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGWaGBBcb0miNV+D3A4CiEJfOlICJUYy0ersIOmdV9B/AiEAp+qO8yC0Fv5/BZq3ePTVk4mE/w9VBTUMF6WAOtSmVyU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.122_1618460642211_0.9909336569814065"},"_hasShrinkwrap":false},"1.2.0-rc.69":{"name":"@leanup/cli","version":"1.2.0-rc.69","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.37","@types/prettier":"2.2.3","tsc":"1.20150623.0","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.69","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-g7FqOTFAt6C/jWlspSyMjOkH5GwCdFAYVrxH6pp8+dqLlbnBYWPnQqKBs5YhZ8hlbRnwJaJoK4i7nO8gbFhrpA==","shasum":"5eb90fa7082fe2c339890dc32a2e7cbfb98fe9de","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.69.tgz","fileCount":70,"unpackedSize":149088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd7/1CRA9TVsSAnZWagAA2i4P/2GYmqNyQvuaKROh/XmB\nCnJO6ILBrwSBQOT9dIQbtqEWHrlrLcnP9+M0BrLsDd43UyO97rCldadJBfqE\nGIlPzvbZHGXp+rajINod+i710o9dmfU1dgBUXasgqRGBOY2PxYMR2rr5sKAF\n80exlzbtEYqtDG5Imi9dQ3eIiNUP77NqL+VKG4porCNlwccDUEowe7bO7Br+\nVQjAmxH6QZ5KwE+Qiv+w/y+mmoCNeShoTqKZgZpKEEQvx+nz+bodbrRQEAZs\ntblpvVyGsGp20T2d6JpaIQ6YUqoz1TOVRmKrxbeRxWitETJyuKE25dRQIhEq\nhoaLL26YKrnbvqWyGzxvdDaPK+p6ZyEci5W2jIbU12mrRCxSyTetBbobVeT1\n2B8DwW8hSzyKs2H/bfA+a+MzmuhpZ6nZKC8MydKdu0rszoU8xC8DtkjOha0S\n25EvQHEstQMAt70rzrTn7Ov0Wqhxpa5bo37WUcu2JDKxvoiySskD4w/98ie7\nP6pUsZKiezzcdsTlc42RpJF17+/fSZYhrR3t4aYuAUgIOXixV67SHep2WEM2\nBBAtafy6uBkwQJ4SzHVK16+jGYMDxHu7UclDbG9WmT5WTwxgG8gdDuALKg+k\nI3zIxp58tlUFdJ5tH0aBiwcBgy851TTB7HELEbDNxO69cA9r7SaoPr+s/iiq\nEg42\r\n=tnrW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzm1IfBk92brq2NGv+0siLsXtah8pBrN2sTLaXUeIMKgIhAKc9XT+I3oZM0gRzB+eXAeADYlM/3c484QIQzq6Vb9fy"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.69_1618460660800_0.2349110697257213"},"_hasShrinkwrap":false},"1.2.0-rc.70":{"name":"@leanup/cli","version":"1.2.0-rc.70","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.70","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-1dK4Kf0UgeOXXbTTOzyf0Hj8hnVMd3+GRbWPaGWnsZTT0rCM/QJPRzxioQK63yK2DqUBcMA9nYzTdLvyPPwq8w==","shasum":"a7e504423fef968c1bc3da5109eb41253dc25d02","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.70.tgz","fileCount":70,"unpackedSize":148380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeiYECRA9TVsSAnZWagAAIiMQAIGNWhnlJJqoR613o82c\noM1unuhX8XSKXCIko+m9A9ioKtt6OCAILZhJMngGdPIeCU8EYIbL3Y9vY09z\n2QSEPuwc8cF4C5QGBisiJpFslYZrqxp1n1oJ09pNkTyNFs+dLswGx7AQitoy\n/HKe7PCth+g2cavh9HTkA39A17+5QgQ9/LdWThMszhH2FnZM9xTV7Qz0IbLA\n2KEr7PgrrJJWGpp1FKv6dVBLDgROr6yGrjheYhljEHRBzywojUgzom2GJEIE\nk0j5oByqXVkkwct+fi0Of3TJW5iYs9T1eeYWhJ63nUStiM03VuIDwwYyyYOi\nUn0nNZnKIrQ+I6DovIP3tuv/auDi4ovo7FUeXnyFggXrI6lvOSSG45rsx2J6\nAPcbsbLuieOHnYxVfepJsmkj5iqLEy9rliHxjJpRCHd8tG0TlYpKLiwyp9nJ\n4rhI0LWYyniB3QLjf6twJdEjZ93UO4bVMIxirH7cQ+ZfCYSF+m/Ekvr1lhry\nhhxIZHRVHDLc3HSFsABj1O7XJ1B9foj4AQwxDiSUOp7SJNNCtHpSOOyiV5Gi\n3Inl0ZE7xjwlCOt0IRfDJuQhb6289elnmIvaxhM+KSh7nLgoEhShtPgwJ8e+\nc2eXPQBjgG74VICsBUi7IrpJeq2cBZoA2sTkDKjeto7644Fhri5gbEgqZ7o3\nzq66\r\n=q0Mf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAOI1mKgURqtpSAQdrrEHnuYlvmtrqekmXPdqvH8tkz/AiEAvKI5Flg+AOK1ygp7ZNZY0ST9kXtxRRDc+XF04DpOl0w="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.70_1618617859593_0.2717670277966777"},"_hasShrinkwrap":false},"1.2.0-rc.71":{"name":"@leanup/cli","version":"1.2.0-rc.71","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.71","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-QqjKor1/bZICdbknL9xcNntpBTyJB0iprzsfy0aBf5ktAC7/worD/ZEJNN5tUWM8+W5T3doVWXIV231ME3NZfQ==","shasum":"bc85431be38ab15e85b6bb8c9a84572caeb32a1b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.71.tgz","fileCount":70,"unpackedSize":148380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge67fCRA9TVsSAnZWagAApisP/jXgJ08ltCCKtsB6uO+q\na3ekL3GHc6mgwPrqmHQZZd4i3MRu1QEzBEWE7LLmnVA/ErrVsHVOIx6Zgmvk\nKQUosRQm3erXLu2qqgxyf4I4/m5knyI1hl7p307qt+yY+9h+NWizcAd8Mzcu\ny6+rJj6yAUUMfo0iZSocmk8BgaZGaJVF/gdBSL3G+30htbfjaWnc4OFsdpmj\nzPOIsVTERhuQq63PHxm0j0op6wTuDS6ngYWQ947224NZzum1iY536maPyxMJ\nNcSuV+hseC9RPkxcfY7DqqLpP6aBJM3lmkNmNMGebYEWhHTB4HfPpuLPP4Qe\nci6cn42w00b7K6snIoWzbtWLfrvWND4EdV+Gj7jPrLEhYFTrUOy9nw4R/ObW\nUIS6lNLzXV6OovBu7vE9/pS2Us9lOj9wRqrD6B8IUSJDlAWPsq6Ry+zraXDZ\nfzf2G22zV4GGw2InFjFNWQ0qzaRsVKhs3JjznIlCORHHbxnqZlq5KaUvSSe7\nlGsqG0PcmLLxQ+yFe8uw9Wg8gCuP2Z5OayCTtxuxz+GoeRITCX7l3DomIOzl\nepmRfFwecVwjfdDaInrghTYjt4BZxb3u6kxL3z5kmpAwwnJ2x7S07JRS3LUn\njgu/S4PjEYGgJGadrVgLd9SPfwVC90tYAUiaYoOZQbDsXRg5++PP7ikxSC3R\nUE3n\r\n=XW4m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpqG7rTgcFqdY4k7bttK0tW/xQ8yNOiwfJxvcHaYvwXgIgTKTN/GgaCcvdiLH9tiPZAK/W5dxzpNB/jCP1pnANh6g="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.71_1618718431442_0.26240136933904923"},"_hasShrinkwrap":false},"1.0.123":{"name":"@leanup/cli","version":"1.0.123","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.15","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.15","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.13.15","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.123","@leanup/cli-core-format":"1.0.123","@leanup/cli-core-lint":"1.0.123","@leanup/cli-core-test":"1.0.123","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.2","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.5.0","postcss":"8.2.10","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.10","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.6.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.41","tsc":"1.20150623.0","typescript":"4.2.4"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.123","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-aj+uMSXxvFGrO32rR5xI3mq3XJ4s4jBv82MajRUnLXuv8sUooAbct20BNb1t9P61ctpi+ri0F+TTEFoeLz7AZQ==","shasum":"cb472664bfff955867cc0d61961aeb9e52cd46d1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.123.tgz","fileCount":64,"unpackedSize":152174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge7NuCRA9TVsSAnZWagAAqYcP/j2TBoQAQHb6W+cInJQD\n2a7o1eun7hi8jZwJ/1dTDgSVK/J0mZH5+hZ5PyCxCv+RKhvp0chgh9bKDkSw\n1TvDvCXjqPaNFuK8TxGdqNdxu8UDc4+5H0umOy3Cg4RlL32lUdqZJusRZR2U\nHZegwaV5txpeLpB5rzSUOCV1OEA623f82r9y5/xXSHpPaFD1fM6LulzS82JP\n4b/4oR++6UKZ3qwBoT67mXjgS0yaMaU43ZcigBpZU1IxpP4C4Klgi99LKXwg\nY//iPDGWcb99OAuBlLxfpT/ni22P6zTXdS9Ia69pMiHECcvRYg5aS0su0LMz\nqnxWz67wPBhgXM8ntpxEQERfLT4ZS77XncAfyolBF6YC0KNEu6cGWnIAeibl\nALr0N1HZHngnGBA0+SIIzWAAxSCub2VL7Fu8KgXlQqNdtxUBJgE3sm6mEf35\nDhFNl0sN0OQHfvI0ql37Qp8GO1DYfcnGtOLxgZi4SgmA19wTWXqkKWBTQki6\nD1L0wvQUfr44XRL9v9VluUQGDzuQan6AfJY4GP15op3Y2znM1k36gPEEqfFw\ndZtV0HiPauAM0qekCJt73Qdu4jGrF7XHrrMgtSRnMDipFb3c39phhrgitbIN\nr40tfDLy19zKBDY8krHFs7rStqiu6Wu4c+Y3JF0WThyajLFdd5nfVpAmSafB\nSgFo\r\n=T169\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCneZdXtZXNGrFyqIMsWweGEcoTnNFpSSVXgtBi4VVYTAIgB5KKlXfp7ZPfZN+9mDKlZ7xfY8QbyFC0Cwl4XUzmKsw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.123_1618719597969_0.8010502333123775"},"_hasShrinkwrap":false},"1.1.13":{"name":"@leanup/cli","version":"1.1.13","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.13","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-PZ7Rg8N8f1O2qJWImiRlzEeS0Ik7D74uPTFxIsf5kWM5M2BVkswofM+szDiwPX/0waScnPrIqXFfYIb7O7PdvQ==","shasum":"33ae0cdf96cf740d6f579c06ccceef8bb506fc87","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.13.tgz","fileCount":70,"unpackedSize":147591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge7Q7CRA9TVsSAnZWagAA1aYP/26b7bZ6jd6MFCo+4sCq\nK9X2Dn6sdukWvI6eDxiLO7+dNyYqQV93XhJZA1jkdnvOYabYSvlbAtJanuhD\n5VBtLrlEUUv132fnjvTH+vmdMEYxFNfb7L9ZFa3OoRFYzXJc7rXy+oVD6wMn\nzSC+7NemrIFwQmTDUYiGZKrrCVYK1+KP0/MTFyPRx1503BIBrbnQnv0hwVbo\nHVSkem/KxixLRkLTpvD6tHubuXQ5/GEkARCOOqOYccFNQkBOk9RB+sRHuVjO\nq2YJCd9CmjXRx9gQATjfgza9A8+v5EBKDewgv17ikuIj9r1YlWTOYYeQZUgw\nXQavs1+dU4jVebG5vzr2pKejwP+6wtmV+3ceQ6yQpELMEPeHtg11Fz4/W8b4\nC7tdat0tnBKgTmZiO1sessTJ17ZYXpw8zGrMLkXQyj7p3PDuBYFlDlx1nlyL\nZdih9H7SfrJ3kmbleaQdsdxoL8P6IJxaGKtHkZ05QFA6phqJSatUN/avMPrI\nbN0VSIqRJVXxlgqpTjWosb1cj2ZwATzVdwBVzAyWBxsr+QC668AuP6JubYMa\nb/fe/PWFaG0kMzgeK30D4sSSAUbznMJvl8gdPVVhsABmN+u71FBXGKtGfYKV\ndDX02QulE7j8wEYcvl51KNnDW8qY6KuNCUqAocIsBz+vb+20Re15a2jV/sos\n9L5M\r\n=GvxQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEhecWxJ65DTMAKUthMvH6XpADhmgw7kEsMPuSfsFmssAiEAllGvdfYZ0TYmnTjdnefdTZBySJZaUd/RnKeOu27h9A8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.13_1618719803061_0.19589874787262906"},"_hasShrinkwrap":false},"1.1.14":{"name":"@leanup/cli","version":"1.1.14","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.14","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-SpX6BNNp0wCJWpsiSQDqDIk8AVEMbOm/Sx3WLGzO/ecsqO12DKtpS1D59fqZ3enyN4pFJ8zItoQbGSocOhl91Q==","shasum":"8192fd5a6104b9c0b84b775fc76ddc1dc4514f43","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.14.tgz","fileCount":70,"unpackedSize":147596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfef1CRA9TVsSAnZWagAAc/wP+wUrDLxaIeD6xLPFryby\nzoDTlOgzC+Y6ymtRinKFcUutFqnWKCCqqHM+4lD/A9jZ8VQK6K/8+Ra0TF6D\nywCvXfhZGuqF17KaTlBdTifGOMqqxl86JTx0md5bv25mPe+SnVdBZlCiO7Xz\n/1Q+k7yd/KBUJkkgetRMHKa0RUsl28UHcv+DCgH5BBYFOcpo+MYbi4GMKvpe\nJBfZGp6lELn+ozVXmZAu0BLSW+iQatV5+YQJbRpfirtT67h2bhXIQZIQmyxP\ntC6stxrtDEkmrnsDQuWDQPZ6T9iRoBsm4EqpxIyiFoihxrA+6xmjugY9yKfO\npNSi71Q/1fdc1TqJzE5oGKdps9ZirswyOHkuX0ZBFAEa5Bo4/d0kNfTb6Dlu\nvgNLmsGA7wWnFyDDgf4CHJh8XJK84kxWn6fCOw6rHReVzWidJGAjmRy3LmzI\noUYoXw5yH02xh3ISL50YrOrl1nU+plzYSwTVnRIBIZgFfYr+I/ah7jrqWWMs\nkL7rJuS0aY30KjcnxEFu1K0MKqGDNVkdUjyfRt7K/BpW+Rwg3o8an/M6O03g\nivXp3J7SZk6ChL02Zbbn8RVQRiBg/OIElZld2Nck5mZXg7DuSm2RsJXTTuse\nES5wf5x6Vuumem39JLhPpzsVimNL39giw25MycT9fnw+SxawC2QfPPLwQFXi\nD1kE\r\n=XXv6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDloaq6UTAf1ip4KcBms04xDKDWeJVwMjtpf+PXKL4ATAIgPjidQOBC1mBSKCisW9Zepbfi/Xgg+/G64IFpj4AiQnE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.14_1618864116984_0.2873870086549737"},"_hasShrinkwrap":false},"1.2.0-rc.72":{"name":"@leanup/cli","version":"1.2.0-rc.72","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.72","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-RY+02rXt48oCbJy39LWFIoPhLEvetPHxymPhkanIG3OUFOiBk/CHN65+EphK3iL3elVkqLIwBLPdqOcVTmcTug==","shasum":"43d4c254b4d086a89169bbe2fd1f1fe987c66c63","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.72.tgz","fileCount":70,"unpackedSize":148380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfgAJCRA9TVsSAnZWagAA944P/0jvr497Oglp8d0Tif9B\nio/BLqXz1WxfiDkHuUTFTiaqSSQOrspMb+U950hUgYy82VnHbNF1Dva68ZNM\n6fW3IFBf+HiUvWK0ssrOq5af2PbAOzWKC9WF1xQFTMuIkyRUnAEqJ3FPItDY\neVBfPZNcYdy4q+xHB+upOhNSUA/JsN/icLHNo175nKFXJwQRUSLJz/nghlWY\njq2OkUwZXMnuqs6NnO7bwMsQWkf2Ox+f6coeF/wYvq1Fh3ZzJPxK3GEWc7Yd\nIiQfkBE2BYvxvweiGUfwoqkskyNkaZkL1lOFnxg2oSYl1pmfj7plAIP+7PzZ\ngH01rZgOYox4ML3h5OwVDQYhEKxM+TmYChXHlAXkEJwUaLDK7mH0trqLnMD8\nHbNlwJu605ojLs3o+9wNARTPPNwhMVgBMesl9LWIZfq+Dw6k4m9toK8lvDAN\nrUWYizm2/VsNIyNjOgiFRzB5n2SDxAIzt1IWTpUocZbsnKJnoXQsv1yQhVWV\nQkd/sRSoW30kwTNnCaMrk8GV6i4HNfpDs5VnmLMISj00aJCjx7iYCjU5VxqI\n+P1bqwKkdw01U141ClePhguo9MerQIMl37RSZK6i3uENx0g/Bj1G9tC4MfoF\n9ydNpGjyG1YhZgsH6CX0y06Iw8/GNT9C/n6Q2H0FoDgK12fLbREAGY7syHc4\nI/nJ\r\n=Khg5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhuhG00QdEUM7wZz7PHGeziOIvXAmnUksspEXIjvH8GAIhAPVdBMCstNrf8aSf/nLXfVKQwyZtXtDYvyQycfaOsxnD"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.72_1618870281455_0.4538780598626808"},"_hasShrinkwrap":false},"1.1.15":{"name":"@leanup/cli","version":"1.1.15","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.15","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-ThO1yQviwqtRpRPXQnljqngdFYNVWQy66PQITXUOzT0fnmkAx0DKt3vM6yILR1gD186Mb0VclgwkXr8LdKWhKw==","shasum":"67ab817ec45eefddbde8601924da0d665a85102b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.15.tgz","fileCount":70,"unpackedSize":147596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfgCyCRA9TVsSAnZWagAAL0IQAIsKubn1U8Nrj/EJdDHM\nQnfUIA6GR+4TZi84Aq7RfcYNB+NSj2+WX/bUx9hOswdFN2zFCveZkFt/KOuh\nLL2Es2WR6BuUhQrItb4Nc6C+MyLE9HQjkfzW5KToOhtnwMvafyiwhunwE8ew\nznz1jUqh3h6CkXpoyMqmG0RRKfpN4zcxFexDT0thjqxym1hPTo2YhpmvAVMe\nC8INKupAtNV4LjRVLCbutwdlEzOUuTMCEeNDtlVJ18Qgf/GAMZjt1/w/Fz7m\niIsC1B8BOiwsUiTUdpTcX22XoS8U01j47ikRJOENpwgPfe+irE7pjAiPswbf\n2XJcqdl40Z+cZEyQUfJwPWVkAH883VcNQvVvNdlfyQI3MMEhEWuXUY9t5a/n\nRlxs7oyCQt7svJCCs/vkFv1+qXaCd/vN8C79JOE/6cehiTcf0zZb+KaEQO01\nf1apxgn3zWJ7qOhhqohADWmLJKF3/JIQlxlW38gcAOvV9lQRJho9Roq0w3zy\n+gUlDWKAWngkbA0/opmxIM/5hOutHSdyvAhqTxmCRkyUrOH7AnzmaLohPy4s\nWBmhf/VVeZcZljSFv+ebGFMFJL8XA+RbpDIqndthYJscMRP+a2yk/rDWYJpi\ng4DiF7v1mMMJXduxUA7jcKEChbDNIJAIE7js5q3JuNS8yMPHUAAmakJ7JiFe\nEmnH\r\n=OqWo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5ldci7TIwaS11uqpma8DRepykScR0JDrfGORC53f8xwIhANOP+alEDRvPHeeSquyn+wOhYe81iIuY8Vhyvugdj0/G"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.15_1618870450296_0.5489834781986052"},"_hasShrinkwrap":false},"1.0.124":{"name":"@leanup/cli","version":"1.0.124","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.15","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.15","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.13.15","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.124","@leanup/cli-core-format":"1.0.124","@leanup/cli-core-lint":"1.0.124","@leanup/cli-core-test":"1.0.124","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.0","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.4","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.5.0","postcss":"8.2.10","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.11","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.6.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.41","tsc":"1.20150623.0","typescript":"4.2.4"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.124","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Rmo4sYPy+3AGE+ocg0tE9wVsuvBoDa/7ZqJzpH6a3bDdm+I2E7dvQNIA628D2/3Bcnyk3eifSCKCloR+yN6BFA==","shasum":"a81ea0b04de8ce5d2f8fef626722b862bc733da0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.124.tgz","fileCount":64,"unpackedSize":152174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfgDFCRA9TVsSAnZWagAAGpQP/Aia9xa4oxx1/pNrkMrZ\nev2aM7OUEkBrFQHOLopVTIlyUTlywyHqIZeijI4VPGlHTz7ZLmgwDpulEx0m\n2Nb+AYQ46cuGfT9Mw0e2ErqiirUKROguq7VnJRY/Wcp7av3+Be28gPEoQtDj\nxIO+eHPnIcN8EZ/Q+6GSZef3QDSlYB8YPAaFwm2MX2oKfiUx02bwjDFmLNjV\nLCstw24UyA3qozF2+sK2rAOmc0pzuzCmJ10SV1qSBNMfiNgEGfDxhmwQBXKz\noZnGPTj3zWfQ1zCSThih/FmKMvXzO/Y/9yMOZzOeA+RN9YpzvRWoXkrawF2h\nuTeSL0OSltGlceXxLuDARjWU4BwznwaX4RG8I43ESreptX2flXUufQdkYc7O\nUK0Mdg3gr7SrOM0vhNsdc6LW0KUTyIMbJunAHUPwlCN+vCzr738lZVUZ2E3O\nwWX+Epfmpu/0V6tlg1LouL2OaeRsUNay+5dnGSCEQXlJ4WFFpz5W2+j9xD/t\nr5kGy6I7gVBmNUrJuN0HAkbmJAJHSND7G36WCp2IZObAg1W+ZaMCJbXr+a0X\na0kfAsW49ly/ELqeQVfl83Z+SkBXAnSvTV9Y2vXR3dCTp1fQkUX5JQg7uKKe\nYN2vTVaJ6AcgpmJb78tCnqHe3hue1zuN1Sx5aDowxxFT4d+cwZiishErnKMI\nBsvI\r\n=cj+z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhRWlLK/CIVS7P9Kuof4Lv/q1LLtrcOfaa/m4VVKajvAiEAww06e3/Ixztr6ExwjNhLjYmVHECMolRT9Cutqw4g4m8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.124_1618870468858_0.4051039529044189"},"_hasShrinkwrap":false},"1.0.125":{"name":"@leanup/cli","version":"1.0.125","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.16","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.15","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.13.15","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.125","@leanup/cli-core-format":"1.0.124","@leanup/cli-core-lint":"1.0.125","@leanup/cli-core-test":"1.0.125","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.4","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.5.0","postcss":"8.2.12","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.11","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.6.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.41","tsc":"1.20150623.0","typescript":"4.2.4"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.125","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-KUm0MTwHKqc1g5gnw2VvgGG+3uQDzPPsIF5aZnLhAlt/7XXoRieYTv336O52sJ7ItyljiuvMqG0Br33fHfQsaQ==","shasum":"fef98d4e6a2d7eb6f5dd50fbae2599377fd6c63b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.125.tgz","fileCount":64,"unpackedSize":152174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgglNCCRA9TVsSAnZWagAA5lsP+gPnTE9+BEghZB0P2vNt\nT4kb5oN6FgbTBogVEU0xcPRafc4KHWcRftdrjNgF/ytwcbxCbB6prPgRqufJ\nrHbCLqEZBCRz37CFMw3+DwX73AbDIC227uJvnKQbMjj9ed8l3ne4frWhbX5e\n74hai5my8NBY6kt2j2GSturcAKU/QSyEYLCsmIIshsGmJ8uIU0LFyOBXCt/f\n1bduRZ6pOfVwTuG4dNIV4Dt2qIHqbxUPdtH9qVc79uA9zxHGaxaXaGKXKC+R\n2gn67MGnBMTu74CwUkR+8wORrCyv/VYR1C4a4ZeBKomOawKKYMKwnaaISh78\nr/PxtTeR121ClSVBBVL9EoPpNx0IgAr7nAhzBbeR2r75HugoycZLSMJQMoK/\nf3LMc6JkXcTgrrAhzV6kNi/kMqt5kkzQx3VW1+zdBmci3U75g3wFa/eTL7No\nvcA3FNGzAyCmUpW+9IISjcqdPPZ4xHAxajN07K60Z7KBBqj0t0KO+dgt6TbJ\nWFkSQqka36bdQ7RhMpLpDURvZ6yhSoAaFZvpIPx/DYbapqIiUuvIEH31gqOv\nRyyWhHquVFtPim2iO1jecLzHfDgYg/cWY+vZHz6d1MfIP+wNwIa5jeCC0U2F\nVh+s4dXE01U2CHQHeD8X+HNbcIqqCggM/AuxKkz92tktkzhFVgsQquR8/7MC\nQLNN\r\n=jKRH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNwbDHq8BFJN5dJ2LJGiHam3gRb8sLfaXsYzkQZkxyNAiEAoBlN4GrhLEKersuP2NCEz4sWDsQuw4nHyQohvSwdTl4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.125_1619153730079_0.20639083668680547"},"_hasShrinkwrap":false},"1.1.16":{"name":"@leanup/cli","version":"1.1.16","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.16","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-+sfR6kh4PQtJA4YUoX+gTkRauH/Mq7ctlK+4FPDhAliDKOutpK/sBMuIEwI0Qo+6k+WC0W+En+Vy842o6fto7g==","shasum":"55ecabfe16074f6acc5cf5f28a71b52b5ed16273","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.16.tgz","fileCount":70,"unpackedSize":147596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgglNsCRA9TVsSAnZWagAAwAIP/11aaonyLI/wEfVb2IJY\n0JWAJAxJ1qCjjEZiY5YEbZ6NmlbnhhKkf/O+gY7qH8wc/AD3rmIE5HHOZmM2\nDDKE6wpoJtrFx/FzPABA3MEQg2sSmOBz+Jn+nTv3Si2v/DCBSXQCl3j3LrK4\nBU3d01vn6Ad6DUf+C91T661KX77rXmtJiYFRRWdajorRCLVdIre67xx/ch56\n+026/IQH1sgtErSUEaKE0ONhT6LNLjsjKYAwNYaq4nXgm5bvJuCWVZ8NGwYA\nvRayi8StsQ6Us+DQz1anCfd+Xvq9SHZFYUfO+C5Cjj3/Qiojpems+eiXIL7k\nfEkkCaOeQ/Wws4xfwavk2mqNxyKYiyi7S8q2IjnhhoIc9jxnHd/0dJ9vDiGC\ntrfI6zt8Wgs7zq2snCjicoOBKPNrssBenU6aHVoEgXiXDreT5sbo+hqlNpfn\nTjsLXSO8BK92qCsHqUn0eDcIlrQSbhFG4HERmnoSjDh94bd/cauRkuVnWtL4\nO1QY/J6nIgb4nMgtjFgz1iySOQlea0vnRa+OAJ3T3+SgZtSIWSR9KPlygYlR\n7qDx7Z332AyyWpM2CLZlxvCCYCpp4zr/E58Ng1qRe1Fb8qlnGK9pDsECQZU2\nPtNa/zy3DwVYzVprLUrhzN7Iy6HG4/10eyOPry5/vPdkeZsE7sp5YIXzU+x+\nqYrE\r\n=g+7K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgFQVF3/Jzj+EGa3whuipIZcQ7bshs56B2a0Y0rQLw5gIhAJUHK81e4xv9FRpfZHOFIbCz1czP9KDTnVvVln1b7Hs9"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.16_1619153772219_0.22596919820338957"},"_hasShrinkwrap":false},"1.2.0-rc.74":{"name":"@leanup/cli","version":"1.2.0-rc.74","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.74","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-03dRWQLge6Iu6km4YNwmHfMLtpOyoFmehofmht2rBIdm9omHi2oVEfbAoZOokYFyMVPstmqfzNez9ZEEDGEe+g==","shasum":"e365463573f39f5add8597eb54e35946aa67c012","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.74.tgz","fileCount":70,"unpackedSize":148380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggrsWCRA9TVsSAnZWagAA09kQAI0VSrNKHogJk4KT9X0y\n7XC/6eEQara8kcnzWLnfgxoHm+PHbXGr8BsTkcPcq3I2Z9qU4XaYZtRn/wQF\nCXVAbyQ0XHztkv+TvBc/4prd1FgGfS/O34bqsMQpL3YLwwkHCDdGIZK03JAq\nANVFcrR6JHGxPXpRwmwyIPt9MN+p9TI3MaECsfo4OJOuE5KPSG1o+CRzi7/T\nRUK5L2U3E9RLMimB0gxpNSp4Un70VZ8wpk/9UnMH3YuRaD9C74ZB9H9w16tK\n8I8PAKrT2dzczMI4McRNmyKNpdqKNFiFOr+a5DNKdNJ3eWVYsuoQCJHIsrQq\n/FM+JKdE2gsn+2CAWNIk3uRg3i2WuayNv8dNloV5QG0GztE7pHoLRPW6T4bC\nwlWNuddnCT+BIxlMQ5ZJftxuIrkx/CJT5+CvsIqRdCh6Xspoe5nDPQlhaByk\nHrHkKy1ZsEgDkJHi9QhHT9FTNYezt65wPAFsEyeCeiXiRjqQPCiO+SuUGILF\nQPgHhN0dgWF0AuGBDUC/0d7EM3Xr9D+LWVV4k7iFSl9N4jKE1n44mmMvwGna\nRMFSb7oG/JzUb/Krkw2+8rkjbwJnbJnHo1rzWjctA5ts8/EUcTCkCxyRPvwY\noDu4MeRDraaLLvRPM61aw/DxNuKC100RFydnoXGfHrwWtkMzKkw3BarsipbB\nb3LM\r\n=Wkzt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5wJwYlGrBwi/WXMNXD9mOiATj5xE+KXg42g+upJxcxAIhAKmrBDXjvkeJXuIuwRJfvtNIH0ix1SyHlcV3VZ8nP6/G"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.74_1619180310103_0.8868621791620943"},"_hasShrinkwrap":false},"1.2.0-rc.73":{"name":"@leanup/cli","version":"1.2.0-rc.73","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.0","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.73","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Vez4dXS5DuZD2+/wa6GJDP1nzWHHz8mQf1/Lm8xafzWRXG+wTxDdkmTtj+u9wHOCHH2hvSSfu2H6iDYxOZOOJA==","shasum":"06d4f199742a324c3d217f8e215e6cc0617b17c1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.73.tgz","fileCount":70,"unpackedSize":148380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggyWUCRA9TVsSAnZWagAAUZsQAKIc6g4jQ9Q4cZKc+Iz0\natE+lZ63INTpiSKhO2w/Eat1R1gnPCBo9/pbkG0v+l2/B10E0alrINl6jgyV\nFYeRpvByAZjFGqyQ1nrX57L+1Yx5PlY2P2/gxCvuxBGNAZ8/eFLKBXx5T9qe\ng05CUmlBc1uxKTlz8SZgHPkVMdl7rSFn7GB61lnSs00fK9HAP58MXabgSWcc\nHZRqnNHAHg8hvvwRC9vWj33fsO/EzYoVeaZxbgqPJakLkI0i7R3VUCC1dLyi\nq5B9IVkrAZkFpNQvDc/LG2CcB7JWvaYqKKwi3+34A43m6REZ5vmOE1teSZub\nzM7PElw+m3Q/13uqhBUs0wtCkShzth4mInjJm/kcGlBId4yyQ/n2Ia6m8dTU\nYCe/dghNg01048KeDitYjvJjXSGYoNJGX1u9LQkbmI7DOjfWWq7dTLaK5/Tg\nZdKcQFB7s3uWLgYN+hShFwGzPf5RuU+GmebFUR1i975WA6MmJLpaFBP7NPWc\nqvhc7fYwHrpPxsYIsGOeGQchPiKy3QKwgaCr5qidNXDdErG+EYx406jBU0rS\ndNkGAEpp9T54aTs/IR9bRkNQrnWQXKOHgqYzjfw4BTUkMoKUJHS774xySDyu\nmrsfUtfB6xlb60w0cKau10JfYZ8LuHIao3+57n8k9mHWWQAHerwqovZtrn8C\nl1/I\r\n=H5yC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEU2Me3n5UHoBOpBCynbxNqEKfNE5flMKmzGRUpsea49AiEAouu+/gWDdYIaGrtD7OkTF3WDL1tnMFyuJeiNG0/25yE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.73_1619207572066_0.23318260671813307"},"_hasShrinkwrap":false},"1.2.0-rc.75":{"name":"@leanup/cli","version":"1.2.0-rc.75","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.41","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.75","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-wz5JM5ZtfOzPT13gpFySEcPleQgN5+avod71gvx7MNdTbmW4Nan5QCQHXWUU9Vjw6uwNJnFZMZi03RJfiP88jw==","shasum":"8bf29ee59cce328c5c69e37d4842fdb49a53d1b6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.75.tgz","fileCount":70,"unpackedSize":148380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghiJACRA9TVsSAnZWagAA0PEP/2eeGMaRNkBqn3KR1jCW\nmXdCT+GZf9jeIgf4MEgEnk/n1e3sAslKDmCIl7waBPVM5/X4Fq7Bafh8wYJo\nkONjg/xMjUGlBspgxDp34GEg1D6qaXCDOMUOeXAP2rLCB50nH0oQHnXiEEhZ\n+url43XUD9q3a/PRZUAJ30cA5h5PRoRHmCOC+9N5lQJPOUxgH/gEGQ3RWHnj\nLwVKTGW2fj4t5MHM4KGoVYLePjzfJyvI+4tru7/wYZlsoLEQiyFGRMTPBTQ4\n4PVyCDbIZjcfJCDIWZyY1PC0XFJEEXCMqbTkzHkjnpPJzUAgXogrzDKriCT1\n6Bxvht4jeoE66FL7Xv8KO0gA6vMX68lorCE/z/3XVNajJaqpDFS58Fvc+vpd\nVD0ivGHLrCyLnzp5W77VTCAvLnwkW47IaJuyfpy7DyR6e0qzr0njifNZkK5W\nGXwsQgsg3SYXeFXwMGQrgL7A05rwN8xcfvyTt8XYoINikYJmkq7T0rxzIT70\nqB8bfZff6kA+SiSCeAQxEO0oghPSY/N64Hbk8Nhuka4AjNU2FyrV/70q754F\nUb2R+uq5LwUZ7MMRzPGUCzebCcRRGGWuWeIv7jU7hf8SORX12ijzPkx8uQYF\n2QDagd0YS6XhpeHgjazduyKjJlGXtVn8bYsbAsFke2FpPUbbm6XuF/D8AeVo\nepA3\r\n=l4QM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDdbx3XwdA96A1GAEkDhKxq/qDvqiTJwNxlOhqgd5mNKAiEAql1LdAxSTrVHMCefKNJPtiDKxBS6GM+WXYYnksVRLZ0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.75_1619403328094_0.2275738342474909"},"_hasShrinkwrap":false},"1.0.126":{"name":"@leanup/cli","version":"1.0.126","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.13.16","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.15","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.13.15","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.126","@leanup/cli-core-format":"1.0.124","@leanup/cli-core-lint":"1.0.126","@leanup/cli-core-test":"1.0.126","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.4","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.5.0","postcss":"8.2.13","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.11","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.6.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.43","tsc":"1.20150623.0","typescript":"4.2.4"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.126","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-YKRrLnEID9G3CU1v0fvqsYI3uq3+h280ccKt8VBWoiRFTUZHRdNvfOAy7ZMN+hOXc7XrWlAeIhe45hmVLzPo0A==","shasum":"c3993bb2005ae0974a21ae0ac197e469f00eb689","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.126.tgz","fileCount":64,"unpackedSize":152174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiOwKCRA9TVsSAnZWagAAkP4P/1bo8zPWe/ZB8CSpWG+L\nmR5HHILQTQw1p0yV8C955Ga0I1sX9wI249q2bH8QADe27Dknns8qNbdzCCYx\n1CTwioxwPIIWu0Jk3ELzP53GoSA6UA4Z3szwr1WuT3qSq0kN+7XiIOVSJOnP\nszgcum50T505ntYts9UDp8XC1sqaUjVIjVtNoRMDDGi4SSx0kjj3nTowfdYq\nBb/guU6tV1pC4+VHbYc/3UcHEiJ8NdooYQpmJPv0VPbvM9oSyY6cJWQpnJKB\niG90TW3X1NzGDMv1MOAGN5BcgjWnaOGBn5IFPpARY2dxHLZWSNroW11S1OQi\nUM7CEQaFDrz9TieAqdRvKFworXXxQ5eNVWfhTOXCpkdSfv3Om2do4tT2XTGK\nlElnhhfNf7eyP5uqnG6cmrQisHsKPhZ5AFslITzrKx9vp3eN6aM9ESSI6ocP\nmI05qUKR+CNDVD2d8WfPPVE4YConN7KmgFonLHlnNH3IOx7qlefI8DHxPWef\nsMfTuzynB5YlDhz7fb40vFHiasfsDZQ0Gv20pYvxE6s+POEZdQUoidoI1JYs\n96Z1hCvRnYBE8seLS1/1E/qoWEKx1BF//hivw/BiRjRRWSBAVmh4TFJnUIMZ\nO/PFoBWC+GpmJ0UjzBCZ45T11Fqp9bkqMlM0aSf2iawfittLoEKbXkdiPnBi\nC7Xb\r\n=7eEw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCG9VhD7ccC36ASmGGEmNEaoSjc9miOfJqxbkTrsHyB7wIgejsVTMHFOWwMoEeBdbwVuwb0bVeHEetPU1JYWF/lymk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.126_1619586058334_0.9812263757512172"},"_hasShrinkwrap":false},"1.1.17":{"name":"@leanup/cli","version":"1.1.17","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.43","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.17","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-TxRyUUsMQqFjcWCABHVgs9ilAN355in9xWDv1GEyNWATFcxpcymGaddDa0AetUACbDVptvNhHxC4/TE3IR9fPQ==","shasum":"1d6f8682e24fe5f0f5796b3fc618a064545f9f84","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.17.tgz","fileCount":70,"unpackedSize":147596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiOxECRA9TVsSAnZWagAAjvUP/R0bk0q3dIsO+aDZGFPx\ntp+gJlzx/Tk/+dGQbzNCNxzAdMcah9P0ff7WO2Mh5LGX5I8ZwWrSjp5wp8bT\nsl5wasT65TEIIkZqtTbGKFi2oGazBzz5N7zPdtIMO6+z0X5l0IXqyhyes7PP\nvVjCrfyMXFpXSEuV/mYGMC9YPoP34kMK41FmrVoVwxzprmO8u2OXVvN3M7Xk\naoMVDQi+SZsUwqhT6yZ0Mp2D0Gjhd1p12HYfy3cXh8mvVo5keEWz/Pj5f/fq\nUWN1GFSS1+9TOeFb/UUFG8Zm5H8trGqcqDf0MmCtjYh1k8owExd5QhGE9x2B\ntNfz25nAaUBGyEwfjnoILFe/1UKgjsaozkYWWokPqhx83nUnB9Zh4kQsD6WP\nX1Ky8AB8oVZuq5DOTPrJYudiTx4U0HyEgRgopEjuIwMLClzPzBkuJLzV1WrV\nvtdDA4WXjwKPihiyJN09+zDD02E+0H4FTg1TAU+CLgJdMqewDvKCuULopwlf\nPK+dclc55Perr/bE6zxoztLebqhTbVFujgzw90KWgY4NPNckBAFaX+rzfFVe\nJBDd+Q/zMUERSqexL4eDBEWqK082SZH2up/AbWADkEH1D2tMOoGYkREUVC20\ndU6jyRhOlfRs0jb41GDbXXLLDXo3fuI0xGkKCsAmP35ouM7/v/hwkuxpiyOW\nd159\r\n=MHEx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCELblv5RGcKdDbBlsHbDGsO0Vb3cD6zFs0sRh6toiPGwIhAMLcC2Xl0GWOVwT7+q/CUP7ulPaOwVuGurYYAbOjQhjb"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.17_1619586116049_0.5574808455002354"},"_hasShrinkwrap":false},"1.2.0-rc.77":{"name":"@leanup/cli","version":"1.2.0-rc.77","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.43","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.77","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-9H0FzBvn20kH9H4oeuSlSt7RlXZ54bDrecKP3afTNbPDe14Qy9i4CM0F9Jf0uG3t92T9wRaqOSS9aAvp2SNh9g==","shasum":"4c059d7ba49dbf4a328e30a7ffb3dca878d437fe","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.77.tgz","fileCount":70,"unpackedSize":148380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiOxPCRA9TVsSAnZWagAAfPkQAIqw5EVZhSlV62vLDpdC\nnVP3Xduun/03oXeSIbOklHPh6MA5HxlsTtBrs9YWYx8A1rLsz31Is5w62wQr\nNLCxVjPn+fyhkJ3baIE3CMQPrm3TbWmHkp654hjyaf8CmML+1YWyvqCHwNaX\nffRyARCZnO5qq8R9zBlamfstjHbttFh+Pzw4iKNmwnW6FzRvvtAZ8NIfn0R4\nJIoU16SUKi5VObtgk/yKyPZytPenaZWsnI+nEwpt59JLZ9zmcOC7yfmrkJpO\ngMH6E0vYedsmQD/bQHAw8mA0A6nThf+WlX3RS6tGW4MoOq691tS+D+6HDLvR\npHyFCw96LPB3b0i3nnf0SQLavvrqkx5G5I06IGa9wS393qNNVtKegp0HWHV5\n6INPBWp6KC6nXVqigAIdXDfX8PEzxXsW1IPK3owfTCbe0a/rjiHQAsKLhaFI\nmCybnXHOUrghmeeQARtno9+iQdDNKMANoPqW3gO4LNt3vCAAMPSn1bzO2ccU\n33LY3neHxfn1jQ/JNwIzMOb76XsurMCHH7eIwaaJTTQxHSlKU6rm0wrKItS0\nSspWJlYwc0fZyvmJU/8y4vT7HK+Bq5O0v6Och8gjmkycPevoZLEHsWZQih/Y\nntyxlN82NKFddzBIv/fXmaQbIMKzMOqhoF4bjPU+DbTpmqK1lyhRl8fslPbu\ni17+\r\n=e+Aa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEINox1xYAvatzwzbQt8QvlXRAv7X9M95gBOQfUc6vaQIhAIMHrZUYgtyNYbkfbuHEdU1iOyns9QvlhQ4OIpgbQ0RX"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.77_1619586127330_0.875238507980052"},"_hasShrinkwrap":false},"1.2.0-rc.76":{"name":"@leanup/cli","version":"1.2.0-rc.76","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.43","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.76","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Dn1vsGLrihOrlbaL9rwEQ5vtSG9LimIJJXn8BHm/2nlbIU8WgpgDxAj+udZ5vDH9ytH0xAlmdvQJ7IGuG6NxaQ==","shasum":"1a4fe1a667c6d01968fd0e05ee2132b95b9f15c3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.76.tgz","fileCount":70,"unpackedSize":148380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiOzqCRA9TVsSAnZWagAAmiIQAKDbvZsvEZjRMzvEaGS6\n/UZP4BUEEJ+uP7pN1zHfrkMazeFLIsGdGXhrlx4QvS0c2+tu3XNhgwQLOcyq\n++I1ejCqyk/0omfmqLIJtgaCjEJEKzaAf5eWx4qYs4X38gp7GfeQ30vtq25u\n5aU2A63/TV3+IAnRcKSdsNBvTXpJPvAvaVuwAiAUnj+jbVppdPQe21YEiGC8\nTqwn2w71ClRa6c6bopXkkdHYBjqLnOejWudykQEwZqGaMObLuCP7maj+04Q2\nI1yICVRobTKdnkTXp/mz5dL6AueqgKXqzf+MN+W+icLN5L+HDfnpSnnq9kvf\nxsFkTM8E9RdI28t+whNNC+2s9rzxkZ+7qvl4KGxyvY5lJe7l29okn8Zl4gfE\ncmpXIlig0S+xJwPBrzyaCTTJPZJRSVoBaIdlhgtM696VUYvLP0USitZMXzlR\nqpKbV7Bl7kbExwswF5MoCI1yZHvQlQh58QAOy+zQXB3q1BpnXo8nHnvmx/ni\nuTYPNsXbSw91auFRiFGXoAXYyFmvVMJcUJ3OGjtmPlinun/DnuT5r3UMC4R0\nlEYuTm/oRvMy6CHaWO6ZOWSk5Q3PPnHBLd643FPfJ3c8rLpzr+3CUUJtCcS7\nSd1AryNlzSBhHF/uWhNStJ/FmDwAaZsXDgMaX+VYiMEucgsPZjR6vOCxNsZm\nrg6R\r\n=JJZt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCA/wJj5M0UFOMLImWoUXtfoS88oBnI4uDHY1I3qqpq5wIhAPm2ziRYrm5a/dmMbq0dq1oX739qHpU5PvcWHxp+9SoB"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.76_1619586282241_0.24996564970858914"},"_hasShrinkwrap":false},"1.2.0-rc.78":{"name":"@leanup/cli","version":"1.2.0-rc.78","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.43","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.78","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-bdVGTgQXHHqqEgP1q85IcAKtxZTAxuMyN0u+u5iqGZ3ofUKLZo5ITEXdpl8xAkbcN103s/jp7+jZMgbbucbzHw==","shasum":"d5ad0b84bcbd537701cc24f607822688ae4164c3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.78.tgz","fileCount":70,"unpackedSize":148393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkGK5CRA9TVsSAnZWagAAtPsP/3q1Tr8ypyZnTDotR+jz\nGqi2o6ZDiuzD9lB5Lrp1eMbBkGxul34OzxUGF0ODySzdiMeYn3XIfccxiV4D\nf/+rfC2iiTlAkhwYbMjaDIodLqwFyUKVuun2QfiNFp6urPL+lUUBSeP+Cr4J\njBVuuA73DxoWSgTTIxgLyVanHhn00A9lqGrb+pzYH9hSilweuF36fGYsIOCf\ntsNd4ZzA7wm71n9O8/lq831y2upIKGmoIUyBxTn4gP5lDeJLqSM3fJVskRl3\nD0ML+RlvSS20Va3qnGMX4q4YRDx3H/7S+kuOxlh/UxOKV4nGLrnf+HumBpZQ\namyeNRpOF8wIGhC0bfO13cWXS0yxlxOqA6Aw+lxHq+dwk/0rMMlaEMypBttw\nl5xIxjvZ/gd7YCejgsY7ESHwwE0qK5+dypzKlOSr9caGlyfjkj/a0pIKm+lt\nlvNRJIS+7awGgWEtR+ccoAd+ESJmtmpPQc9mIUY0VgCkyQ7FeQ8HI6YT2oAc\niCbHSg9wLHYgazLjoxT9X5j7BLWP2Bjenzt/OFLshmtZVudtTTkCsYf5QUPk\nmu92wwuJdvieHeMbiuFRA7d7wm+leG66PCDHMP76Bss6JRPI79xffQs3Zebq\nlXx7kbcXaol6NN6pBzqYdTwyLp+Nc6BstsCLxvPHgkG7Jp/AVQjeyutx5ltg\n8tBm\r\n=0yw1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD66V0XpW7CJLK1fGxPhZad2vUfom6IveilcZWMZKg8hQIgZGK3gj2jrQhAnU6hGtgswDZc/z/owYmgHUuLMfsllaU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.78_1620075193170_0.7566445903378383"},"_hasShrinkwrap":false},"1.0.127":{"name":"@leanup/cli","version":"1.0.127","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.0","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.15","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.14.1","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.127","@leanup/cli-core-format":"1.0.127","@leanup/cli-core-lint":"1.0.127","@leanup/cli-core-test":"1.0.127","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.4","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.0","postcss":"8.2.13","postcss-loader":"4.2.0","prettier":"2.2.1","sass":"1.32.12","sass-loader":"10.1.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.6.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"14.14.44","tsc":"1.20150623.0","typescript":"4.2.4"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.127","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-F2tvqsFgTcsbWIxNaEmdsMEX2+DP4Ea5wUSDIe1NISYu0XIOsoz02K2Ymqp71wgLl94S45oGgCMcZVhHAsFAhA==","shasum":"0cbb1b1170a51bfb10651fcaffcdf192f63ec316","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.127.tgz","fileCount":64,"unpackedSize":152172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgl8rTCRA9TVsSAnZWagAAT2cP/1jlE26OzF56eSBbMDAd\nukdUSL+UPdeyO6nch2e4DyR8bhqFnsWJgDzD5pzULS0xeCy6NmalTqm49V1a\nL1sDnxQsFikxF9ozDZsq+Q823HUJQea1btVmZRwn7gUlPrS5jU5v6ENOKvrv\npaeO138cYxg56MccPv7GfTz2gjv0lSuWAtKJBH6cACpDLhd3OOrObaIt10YA\nsSzpE3Dzm2qfIoBJp38IbGKAN1DcNPh73Z4x9VF8xRSdptCDELB98C7qpCX0\nCsJui/DOyxp8Jj9aWxPd29lT3z/vZeuSUTlwCAJKvUd0wFWP4/awbUIKjGPZ\nwYnNG22ky7NGuaptINiAVlOjDczz4EX+dMIDFlU/GIfrunbM+qeSqyqBTmz2\ntjaaHkmwmjfC52f6A/BzCczfC1keCxXSE7MYRdmd5GXa31jjTyoRDTUd82eT\nJfI+BS0sz6P/efqRDuXOSweaM0kH8Ku/I15apmM3VvCXdG2+Rkko2xq+02Tv\nyBKljOMN8zQYC9wT16j27XefTI2Bob8fKMNu3/2n1AqZDoQW8XM1rT2IDlOI\nTzobmEoWm30V/kEXYkIDeyWvgiFdQxmUEALLew2GY6C0sr3kEijmwV/xUVWc\nqmZ2RnHlbhOAWoAJ1r3s/UttnaIeRboRLsVAA3eKd8UkBJT9OL+d28rR6ptx\napER\r\n=OSFX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGWOg2IUDNmJ2yQCIAaoCA5HzMZsEV1QpRuYnZ5Wx/qQAiEAgzEM1DU//s2umQZo0mVH1XihperdVMDSQ/+j5sI0Qyk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.127_1620560595230_0.5094787128840961"},"_hasShrinkwrap":false},"1.2.0-rc.79":{"name":"@leanup/cli","version":"1.2.0-rc.79","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.44","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.79","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-dmuhBHCBZeHMEUfNdaNangXhMRjQinCq8nXGUY5N/PEHwIyyUQoCMMYirVJvjAznm9jwfvbZogmAhM7G3FhUdQ==","shasum":"529d140efc6b3ec5f7eac367c3ca43c4239831b7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.79.tgz","fileCount":73,"unpackedSize":148503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgl8zZCRA9TVsSAnZWagAAvacP/3YrsUsjrQvY4rHGhBSm\nUAfu+at0FmsXVAMly5uVsRaE1mwOQzoSa8re6b7qowc78CRz+TdkCKFIm4eG\nloEmGjByufcf8O/LsF+CJq8R2FirJW+sEo3CSm/U02oXozMeuhpFfHgmUKh4\nk9ExQhK0f9iI5q3qT5z6msyOK/i0QLNs1nhHxGIFpZ092iMjQwwq+S0w3pgB\n9ytHcRwH92SgkhgEkNNfJQXkyDlU5lgrCMXNOwvzGnApxuPTCmdVYoR6mTFn\n5Y6b9xT47HACcSlZ6Kyl5Lz0xX9WUPJ+LukPnlUc/+fTs/i3m5IiGXQPpwS5\n5nYcGoEXCqVbgDPsmznGuK1hq77Ag9k16gpFqOPxYpyty9L2V3QZpFl7p6bQ\nGL80wz99VIbGwYZnZ4WPcTFhu+rGkipAZ1pzVUQt401OkbQBFBnj0YlS1hOh\nNr3ojcgN3TB//p7rG/UCU5e6BPjAwn2DpLOtXai3nAFk4cFUv9CB/+YVOaqj\nJzVT30SbYr/m8NKzfx5y8xCEWz1zj7SplG6E8LCAEfvPkEKpAHRW/0yM1J80\nsbYdD9ZshpWk3CHhHatC12ZDqlYkUXyHJEuauqgnrSzF+PabjAbFf4jOgaVQ\n4b+8jfTavFk7ieJq4k8Us04Vh6olCfUmNcrzPhleU+2DZAC0YbDK8fT+3f+X\n2RB+\r\n=j3YW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBzmdczj4IgDosaEZuS4SnVnsTFExarr9BnS7M1l0T0GAiEAxeE4TlMybcB4EsHSFd4GJeD4cAN6jBXoW77WRmjp+dk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.79_1620561113063_0.5396622152264337"},"_hasShrinkwrap":false},"1.1.18":{"name":"@leanup/cli","version":"1.1.18","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.2.1"},"devDependencies":{"@types/node":"14.14.44","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.18","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-W8N67KHiFYE0FSNc8nyLd8B6ykkEpEbrR1J/UAUquRh1zavWxkt+LiDYwJnulyYKt3K7i9gETBv883hXP4wHDw==","shasum":"73eb0e74645bca58f664deb41901356790f30003","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.18.tgz","fileCount":73,"unpackedSize":147706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmKIUCRA9TVsSAnZWagAAiTcP/2sO7SCvP2cIYOzx7ysp\nIDoEvWh6W74h+CSVCo1wdnavQDMsVkuX8xYjElP3BXpJs94OtboVGZU4fzN9\nyUJv9uSEX3bWc7NeHYe/gixFnl/BxPGL5cI8iGUE5zxMc397MJioPAzZi972\nXo5S7Rm7mrbhxPQSzaGKhDWv+a/4LqZRMLU5BehX8kbog31xv4NqNHKhSLeA\nZaR9IJYOXiylKdDq400qaji2xhnzIAopJ3ZAJzGl0OTwqVzuhmspjaPTpQPa\nyDwHakLmxxeLGWrIHMUfKY4EfOMUyD6jEO7kXRWdqXLv9S8pbMxTHR1jnAwO\nJ6yKI9UWo1kPBoFMFO1JYKQQWKn2kDx/mDpMHGweBMSvCUz2JoEQRutIhWDR\nmENS1hss/L7N5nOBv3qHnhdiJfAhnl/Lqz5Tnvb4SfYhj3SOBH2sT36xl+mB\nnhXqGtNvRJh/o3ux2P1N0Wr9tYzK/LdBZtUOPaacxAm2nLyx/vuy5xBX0jx9\n6knR80Aet/i4Zz2v6XEB5YIJNcTGmeb3K5gQqVRSPn40yX1t5f62LYg0UgVO\n+MK9JoL45ho/aSj8J8quUpKMlnan50F92B2njR9Rtjv9coPrISWyXB0sukzB\neF8vYUGffXowfg5mb/0YuTL2USSsi+LVCb7sZbQtu9IlKfCIGa9NaVHhgi9H\nAZqd\r\n=PIb7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNCA6C4VzWkn2Gsch9kr6xt93SUyDcnxYUdW3NyfX4fAIhAJn1VDZF0dUiqw0wX1Bxr4RMBuDgSfNoaJwPYc024n0A"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.18_1620615699939_0.5338854482073143"},"_hasShrinkwrap":false},"1.1.19":{"name":"@leanup/cli","version":"1.1.19","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.0"},"devDependencies":{"@types/node":"15.0.2","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.19","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-6sNQk5oWk4LLAGXSSSDjvdUwoipeS+xdhV6wZn6Q6xfbuwOp0qUvNJFuuGauQVVKFiCWp1TwQyRBJY2x2p0skg==","shasum":"b740a8da5f4238b18a493d8fa1ebd7e1fb5e9c04","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.19.tgz","fileCount":73,"unpackedSize":147704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm2ItCRA9TVsSAnZWagAAqHIP/iNX00D4T6E8d1wUXQ9K\nV0C/OhQjgYDb8Lo73yfcw2rLS8O35qe/M8AAlmQs38jnDOPg0+wkW+VSfVJb\njS5T7g2A8COxEmZSkIjJeXwPsXY8p8fU1H6S5BKGOWKanvE9CesA6UK2dKMA\nFxNFnEVANkc0mxgXa8y7iOfKKeWITtwUXCk55GQRV/gNvp0+Cg63GDbXosHM\na0AgP8WtYstEKAdYBKNV8xu0tH0NYglGh/Wcw4Tr59W5uB/6svXU4G6bYody\nL3f8budyMSo9B+TqG6u0Y8RNtV/maQCne4+OyB1GW2qxy8UmNVjNoBLysPQd\nGLIZdCKN8yO8ePgu24Qc6JwrcgZx/+i9jGnHGT831NYAKIny8q0/PhAUCQ9P\nBbIZysvWa+ch6Dx4mm2KYxN/oxGIzhGV6npZX8MspLZetbqOPwlY3z8qdBDN\nvmnlI1OTQLeSusUIWTHZxrxfeymMtXxLxu5zg5BHL92Mkh/ytcWzwqN9UlmS\nTQ8Osxfqbfkum4oxRu/NKdCXsg+DwUgWhZg1Cg9EtXgX1RFtVSLlrCAQnuK8\neW/+WL0iGlVa0Zq0kUDZop9eKbKDh642NTXzHZNx1BelFnqDdnGnlEBlIq81\nCyioNi7Xe/vqXo7SIwV4fxsk2Zr7e0L0bTVW39oEv0jkzWu6olkl7/8CKo5e\nbN/4\r\n=k5S6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQk64dUYbZ06tIXeW/GJP0fwOWpFMitdZlT0bQm6QDHAiEAwVVPyRMtOXKVC1vFziAt1XAw6Y5GLa53eNf1fr9qiUY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.19_1620795948558_0.17341797753081867"},"_hasShrinkwrap":false},"1.2.0-rc.80":{"name":"@leanup/cli","version":"1.2.0-rc.80","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.0"},"devDependencies":{"@types/node":"15.0.2","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.80","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-PsfqnZgybyYPGg951xgeI4PXOOLuoIVAibrtS4GjnLZkDNO5PIj84CkVkwmszfM/Nd6NScOQA4Bg5rnj3mTA1w==","shasum":"fb669ea7ac59e5858908913c4acacca8f5ee7a49","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.80.tgz","fileCount":73,"unpackedSize":148501,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm2I9CRA9TVsSAnZWagAAde0QAKAR6N7HGmhZNqu7XeDf\nxhuWIVrdNOAxxB+/XyTZJ7DG2KxC7UEZyoMpK6s18fv8sM0ssncdqHF0zQ/f\nSUUchcjWMenCw1rxq+RXE2If8ostEyqGJuQTknBYKONWTwyC+2qZxPRBc338\naL5C/5Ae5+DCT0GQViT8zYQQ6nQ0RlslGe8L9bed1ciAaaHwGGAkNOS2MToB\nDki3CcvbN/EL3wysejPL5/OQOGfCegftGZCIW2kWn9bmMMmJq/NXS/bq5f6H\n5s4MLDIN03oI2DaCJBe9fwA9LE7+UsPpah8jkW5P4Y62OANK/mcBycWwxWcM\nWWz27fDA7tSI9I9aq1WtNDn6ariN3cBeGTeXt9BVxUjMw2YdTlcgv7STYNKr\nGkl3DUxVDhFYarVHjQLwt6GGM1PxUexrQXNS5c/2uzTme6Wyu9NvLytJBbaO\nSY22D0v1cuxlK/bgRGdSuigDZHDRwnxBQsdW7i88PjDjyCGY8IhepiKnRJD8\nG8jrNB7AMGHZl2hhHxKAlXKSuEe3NBOK4ljlI9n/Du6QNCwynS9m9jx2yoix\nGUzDnJUX5BGyK4JhkFlR2yOEBEdyKs2aNJMbueR50kDEkRkQhMN9RTwBqCIy\nvuwgyR0L32KPDLpJdoycOw5ht1eHEvrcGeAldPaQiCQM4wVC9xEoSKMB1ZmO\ndPfd\r\n=d1i1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGzp+K28796KZdJAyJ4XGKNPYLT8sj2+OCuK0AvUPJ+nAiBmbcU0UBHtFx3qk3qR5QFUmEr+pM5LE2G/vccyPmOtGQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.80_1620795965241_0.26265835175896757"},"_hasShrinkwrap":false},"1.0.128":{"name":"@leanup/cli","version":"1.0.128","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.0","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.13.15","@babel/plugin-proposal-optional-chaining":"7.13.12","@babel/preset-env":"7.14.1","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.128","@leanup/cli-core-format":"1.0.128","@leanup/cli-core-lint":"1.0.128","@leanup/cli-core-test":"1.0.128","autoprefixer":"10.2.5","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.4","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.0","postcss":"8.2.15","postcss-loader":"4.2.0","prettier":"2.3.0","sass":"1.32.12","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.7.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.0.2","tsc":"1.20150623.0","typescript":"4.2.4"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.128","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-pZPyWHe1apb020QR9mKg2lTBC3UA5IJsV0PBqctivrDBsMZyxLjf/V3S5T4LvAp70t9quYHndQco0tTswsJz4g==","shasum":"aa50a9912906ef1f7408da01153ae4905e6ef823","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.128.tgz","fileCount":64,"unpackedSize":152170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm2RXCRA9TVsSAnZWagAAuvUP/RMaJVxNBs4o6w9Q2wpo\nLbTXwyZCZGQBEioayH7YeZ9CpgFi3i6ez4/5DPwH2uyPGd3U9wSJaToHV9ye\nb71QQWfqsIxryq4mQE/3kH7N8egHUQs8NfyiVmxlIt3wkg2O0RupDr+4IH5D\n+QDMZNlOqpP1LuZ2KfvMnJIGKygGBvnRB/Js9WECdjH/r9UWwOtv0jDyjPpH\nyoKbfLl6sunn5W6TUbHgkp1rbMUWFTPEJvYuE+ClqgNL+8XFCujjOlKk0eFO\n+mQAq2AlDA5B/pZJQJo7gnM8HCZ1Xrw5rNvHyvMmf7WCffMfpBnZxCN1c8w2\ncfWOIRSNhpYO3fq39rm352d0cO5869NPcZkqNJNzvMYJbfT2ai/cFiU5Pw6i\n27rethMtsEDdidtcGkgfA2YLHIegWp0YGIh8pUxIoAQPi12IHiFgBzWe0b07\n5/Cr0+mFenjw8kHTK4z/E02Lyjo6fZpsdcqVbizUnBXv52qxhd/SWFfqNKn/\nrVa0vI0VN2j6X/m4FeYM6ZXRHOT96reDKcqT/Yuqe+nfJ3xRwgu+MI0i+og6\nW51Jv3iPj5RE1qarQ/H6zZ2sxECfMlTnmboMnM5f/DFH106gv7giITXHBqfs\nzduuh2Li62sd9qH1sDe16U4cGSBDBkoatREeEg2pz7W1mjH32Ku/icHvGp3H\n67aW\r\n=HZGY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBwRQw1CwLkw9YqA3N3ndAJRfL8jHC1BiVOF1RJ0chA/AiEAvewgTyXULkVHDu36r4R4Xska1upGG80PEc4jfwrSd1k="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.128_1620796502758_0.17151647489033706"},"_hasShrinkwrap":false},"1.0.129":{"name":"@leanup/cli","version":"1.0.129","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.3","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.14.2","@babel/plugin-proposal-optional-chaining":"7.14.2","@babel/preset-env":"7.14.2","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.129","@leanup/cli-core-format":"1.0.128","@leanup/cli-core-lint":"1.0.129","@leanup/cli-core-test":"1.0.129","autoprefixer":"10.2.6","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.6","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.0","postcss":"8.3.0","postcss-loader":"4.3.0","prettier":"2.3.0","sass":"1.34.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.7.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.6.1","tsc":"2.0.3","typescript":"4.2.4"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.129","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-hPk8PUaRxJclk/AP9ANWCdX9jcHzyOMw8g5ftzZkDz4fPg1wuJcMQwXOXdMx1uG2S9h1CVs7yt+TgNO06WV8Og==","shasum":"56fae885ce75b5fc1367609daacc232f9e83131b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.129.tgz","fileCount":64,"unpackedSize":152159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsUBACRA9TVsSAnZWagAAUIQP/3GzEEyF6k3HQp7OEQ9r\nEnIEyekQGDnSZ0GXnCfbrPNfqV9Gz6CZ5VtJrGkN1ckKuhC0yvXrUkvQMLy0\nj9rS6bMf5QQ8DB8FWZ+Q9Lvm7YL/qv0XW+P4lSXHpt7CKzFzRnKtU+m/p+Jr\n70/u2ecR9dAj0BxHqt6GWoQNY3t7mEqYRGh04FC7GIAn6wPz9E+zqJODWgCT\nB4ko55ssjlcFd+c1WAYM4eusrgMv5i66oSnUnRLNENo1CxNfP17sSWxa/1Vf\nVvjQYa2+RACEgqzEzxuS7smm9xGELJrVpc7y+3ZQIfPSwrqNQoTrqxBpCWHE\naHbZG6VgwAN9ofd8/qGeFl5jDw0iE2YaUFxEP53N7TOcZJktECtQTHU5ckvx\n5XQ/TaFSYevJ33i/gzhjztr91mtQ/sN81uuW1c+NKqmx5H3ALKvW0kcTo2Yv\n/SOkeSmTAITQMXHBPqbvUunWzFmZ28Zeng+06Cjj98Cg6ql+wHsuE7waRH6L\nb7akWLZNgJtITVD5QKLkyTpcw25uLfLPdw2Iwp0Y3/uFRvQe1EEUpGI7lWdt\nu2BmZcKrgXuByDNYpLasOArImLYPlHmT69GldAdSaPYcnu/sPK52VTNAhNOV\nJuhRcqq9jzVmIf3438DTtS4gbdxK2NXdOPHUyCr14ev9/T2hIbCuWDxU1kvo\nG2Tn\r\n=3RBJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrO9tUEYO4yudomW2qnIdbOhZchKYIsL94d8tYvf8bXwIgB7hAW5YP9ex9gYc9T/b1067a5cdbc9BFqQkePX02+AQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.129_1622229056048_0.1371201209585291"},"_hasShrinkwrap":false},"1.1.20":{"name":"@leanup/cli","version":"1.1.20","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.0"},"devDependencies":{"@types/node":"15.6.1","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.20","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-YK5NKW4/sShcT3coNGQpEAAFfqqSuoAHtugc3UEHmLcpcb+8DHRfDgTHUWt+OTMIgd64YC/tMzo1C/+uYQhg4w==","shasum":"dfdd0687c50d8304103b52bce009ef62278af4f0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.20.tgz","fileCount":73,"unpackedSize":147703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsUBbCRA9TVsSAnZWagAA+skP/10DZOH2cr7oDE7Gf9qQ\npkkY0caq7Qdw6CgkXVs7Kpv+kP9uzM2U+jmQ71NPxsmFpNIOFKF7tRXTpDfn\nQR3sPAu61tGaJE8R4BxttgUTA85e1wNrQkr+TC+N3DRAyOq7GZz9pk93h3Gg\nrFoo4DP+PKKuz1BZzYPhSAj+OfcSVw61EZsfKp9HNbUeC2o278V33X/bvJpK\nUjr4hodfW6B1nuymUJYdyFTjbf6STw3tukjC4aUMU6vyBRu6ezU1vTPrXPYG\nnz8J++jbagVrFilNt5xu2XFDUvYMvXToc09aT9OylDuPN3QcJNG4hhPhREl6\nc2jikbuo21pSdMIW2WzLZSFtVoUzVx7LBbuBiHVIBki+spWxCDUyrTEcBwpY\nIA8btq5HCOWwfcQ9oI8ClMImNE6KhhjlUw8EekQsZwPLOesnp/ZB7SlIF0eV\nfelU9udhJpNA9vPaHl3BQvsgVJ8ZpWlu5tbtlv97ld395WhvqamSVr2EwJ0m\n+Qiae5J2mXCebogaxuKm0usBV2ouAfJ67KRTaJrUl7GPudopUGGGqBoPSikw\nqKZioAUIgYXOFpJrrNHq8W054zJlmF4MCZAWG9CJ2Oi+orMxLN2/LxGWlstC\n1cD3sEmiirrm2OBa3kntDDOAxfOZCkUXYmny/ndOgKGN2aqoZwidhcWV8sFN\nj5BV\r\n=8pe9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMLauiBh/vdIbDuK93aGzKNFriIk/lGiy0Iwk+Kg73fAiB8nUPtCgkgRSHFjpjP+3Ibq054DEg3H50VF+DflkdZwA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.20_1622229082921_0.18697816854543903"},"_hasShrinkwrap":false},"1.2.0-rc.81":{"name":"@leanup/cli","version":"1.2.0-rc.81","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.0"},"devDependencies":{"@types/node":"15.6.1","@types/prettier":"2.2.3","typescript":"4.2.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️   | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛   | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️   | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️   | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️   | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️   | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️   | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️   | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️   | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️   | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️   | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️   | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛   | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/autoprefixer)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.81","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-zkbXS9NtXY2dneRYroNiEOOzAQgoqAhsxZ20VObuWkSMblISivc1QHWKa5En3Q6e7kbZbWBAB5WjQhUvCFwKeg==","shasum":"e5e2483e3aa58cc52c9a9d0c147d3dfa38e38857","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.81.tgz","fileCount":73,"unpackedSize":148501,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsUGpCRA9TVsSAnZWagAABXMQAJB7MP+jPLZHRNvfKXU3\ndyWU6D81yE+0sb6tj4s01MSvtNVVpJLGTepva250WPVaI8CYxPSZkikn/Bfn\nJq9ecplw60MoP/KBNWd78E8WlNazZpaN402VV6fEq0ryt4rcW3/WO617yjB3\n1F2dXL+h6as2+v3FmC+4jMynfu40qNxVFmVXC48v5TMQ8XxKtHYJfc3fsXZD\n2acx8scqweoLu5FAHNFosuY2IpDgdSGTk6w9uX86rX18Fjascd3Q/0RTHqgH\np5V39vNGt6LE3nEVLPPd6N+29+Edjhko0I/9VskgelTzMsC5M0Suj1gcfyep\no04EQFjaEoBXCiwZXNLQDvo7HKJOrEWom34PaEYc08UHaxk66EOXKVTxJxF0\nJv4uBGDz2ccIBJ3yYC5lCSh73ByjVO2qWnO5ojXGVplkIXV9UL7X59HEWv7A\nv+wRGFB6fYj9ondtredeD41gKRnWe6OhtPzutLMszmllibisYvCbjopaGknJ\nAxH8N7tZTosCkTJf1RUVe0d3vy45wfOxPwb8iBnBIo63DqYQ10i3ip1g3lER\nWm+fMnJqN9SoO4SosVHj23GwV++Fa6Yly0AQaG7RPPLqlY+nA2oFva9EgBM7\nct4ZFKv7mBmz9Yqzohyd2dcJKPcd1FSQBeqlxME96syRJ1FyrKm87m4rJ2O/\n/AyI\r\n=3AlR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8EJViNnCtHIglG4WnPhTaAgDjS/8XSBPe63zElHhuYQIhAKB96hyQ7F/xGiT/W8BNdHJjn98TR7l8IuroG5MrCl6f"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.81_1622229416609_0.25402806617611673"},"_hasShrinkwrap":false},"1.2.0-rc.82":{"name":"@leanup/cli","version":"1.2.0-rc.82","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.0"},"devDependencies":{"@types/node":"15.6.1","@types/prettier":"2.2.3","typescript":"4.3.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.82","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-7fsiG/YYWAQEXB/JhR08Fj1Hw7btXu7XkZetehCilSZcMCbFFPlXxpDBrb8Bx+unX+DgyfKgBCwiKRIw70BBCg==","shasum":"c6a33a7b60f5c7c5feb44cacfaa197d5e01e3575","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.82.tgz","fileCount":73,"unpackedSize":148355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZGICRA9TVsSAnZWagAAcDYP/21fDr7+KxTktqyqxe4/\nIn2XKpmu6wvNiNAKgX5ALKHu1m6182ogyP0lPwVWqviTtyTDSawFSgdalBNx\nmSkA5b2zVsxFBqzRPbA1qrbU8iIK97m4TXayJPRtLHKAYZU121LOnT8SN9Q7\nkAgxqJRbFfRIrhhDHtm8X3oCEnIL+obHBoSVXSydtNhgRK0l216oWacnQi2B\nsR0+vMMfPgbanza4N+w8fUuocZhw2bNAkzNsEz7wmStuqZlj/uQ2G/zbwoj5\nMCQ3OfzQDPRq4YJ3h9rKFzW1AdwZsnoHFw1QzLtR1Q0QEsRoSccubKIsafL3\nFqg52N4StyURvkKF721/XP7Cz12RF5mKFyHohNeady4zKmg7teKfc3Nocu7Y\n3Bbwt5dQFvAvh4p1Ww5Bf4fAMPZcwa7zZbW30XRkRU+VYbApcjeU53Cg1mdZ\nBJfRU3nLMw0QeXq4zjuQRlir40yiLfQCYxtaXT/nWMYVaXr4dmbUudmF3C7u\nLN480FOeAyNsU8d1UTCGdnTyQ60o0TZKw/jW/3nWJvPS3Gw4XhCjd3B7pll1\nvuXiDYWaQ++9qlyBkZURq+JtaIEbGXSwjaMP4EdakDy0vvCMF50/zh4M/Anh\neseQAVdt9h3H6tIpgcEq0GmV/z1G9v1VGslteJLkjQRfB4zjagGpEdyvlSTb\nu7UM\r\n=+6YP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2v5eOzLKPQemckB1hXjOCiUuv7rIjxyJgZ7lzWksmLAiEAnvHnfpPpK5xCNb27zR4RWPd+mtY17P0sjNw1TOs/XAs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.82_1622249864088_0.2813899860242013"},"_hasShrinkwrap":false},"1.1.21":{"name":"@leanup/cli","version":"1.1.21","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.0"},"devDependencies":{"@types/node":"15.6.1","@types/prettier":"2.2.3","typescript":"4.3.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.21","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-o6m8NJIW62Kt+if6P9fI7PPOuG3DUsrUbauxzZzKg1poC7dTHYHnJMvMpd63ufjIEDPhZ4RPj1zRTAw9wh+xuQ==","shasum":"638095c05b608cc43441ec4cf6846c1d358befb3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.21.tgz","fileCount":73,"unpackedSize":147245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZGQCRA9TVsSAnZWagAAWKMP/RXobu4g68kWuKHOi317\n8EduRyXtx8YE5FIMwb7CrVVOBMtIrt0icd1nucKLi3PLTVydQKIConXeJeTs\nQu4BYFUOKQN8RbTIZDQsq21Rs6GO1LkJJ0VRYgBnmicsjl/WfStmPDABsCfF\nNJYUz3qJPFD4y6KpRldtS2Ga08LjMKEk9TbhrGLO+9elNdSIKdRJZe75lUB3\notVao644VfR141hAT/1Rb5B5nVgwml47wRcDd/mss+8akQZBg/6SB/tAP7q+\n2736rdHJN3KUEN4zA7N7SUcLKihhoc19dRkd2axcsA1IMF4vHWitmr6/wpf1\nbmENk7GUMgxST682N0C7pYs+wABD1Zmlxo70+jTwiXzayfWwVyX3w1Nd9kIc\nTuAuwXX8w6hXIYoEtIHYzyNUq4uKHjOOVTB0yOvuzs5G4PIpGPvDOMRvReRm\nhaxnLw2Z3EeebSVjDVyvt9NHULHDwiKMjrTybgbeWHruOz00/0HQDE4gZo/h\nhw+8HCAo9tcuk7y4BVEbA5ryaie4+sE8ombXcMdSz1Md2LU28LGSp6W9DzcM\nGvYuC4Jnbc3MfslVOy6hIyjs80kKsmTDqKXEg5dMPhD4o9UaNd/x4NBQ9SN4\nmXMOPWmJj79I+QTDLR4gymYNkkYZlNMWfbwCtx4w/HEofIKPKNnGxNal81Hy\n89UV\r\n=JEjI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFRSlHq7uGkOz31JTLU1dcLbPUk8igjDN0xRYBV3LG0iAiEA3LrRMmMEZtgrxrEdJ8WijLJvtBC0LF5vPEoYZ86J1lU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.21_1622249872419_0.30995755488964893"},"_hasShrinkwrap":false},"1.0.130":{"name":"@leanup/cli","version":"1.0.130","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.3","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.14.2","@babel/plugin-proposal-optional-chaining":"7.14.2","@babel/preset-env":"7.14.4","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.129","@leanup/cli-core-format":"1.0.128","@leanup/cli-core-lint":"1.0.130","@leanup/cli-core-test":"1.0.130","autoprefixer":"10.2.6","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.6","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.0","postcss":"8.3.0","postcss-loader":"4.3.0","prettier":"2.3.0","sass":"1.34.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.7.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.6.1","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.130","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-AtiQo2QnCASIl1OmolVSLN/A5do+kjgvOkiS+X9gAmlE8CyPj9EtaqiNXGjDWKNKoUHDhrkzgTN7oUwrQt74ow==","shasum":"1851a5e0270ef44796c769ad6abf23b84e28eb04","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.130.tgz","fileCount":64,"unpackedSize":152159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZIHCRA9TVsSAnZWagAAxjYP/Rh5r4FJM+R9jZknGg+6\nM2Qcyj9dFmXuPDkP2PqNIiac1UtuvtMtRkkJuYQj4LIASTujxNmTtDLnODSV\nnmHA+Ck99aqQk55js17F714sVZ68gIZf3lz+Q80f/T9d6OxWC4DiMFM/Gggw\nta+E9wACcgkBbUku480RVPpTh/+zFpdPOVFEK+JPLpRskQteK9tkctz5qYOw\nDYK8vOfR8sZ91pLjnj7RrHlNgXmzncZbBl7PE68IxTLib+wn3YywWDL+x2lG\nrN8ELHllDS/S2HRIV1EStb81Ug+UL9kJKfiBRGQTvC5hwOsgtPObZw7UopZ6\njiG5XymOfNCDoQLeNLvCNXjXUhGSUVxI1mKqIUGjJjqFUG0nk0iqbIF9p1CD\nB3//ZrH8Vf5t8X1IOH4HjOB+GrkTVvQPWxOTNq4XBEJjYwB3jAmI4rjrGCI4\nmhs5DBYMdvITj5XX4bAxIrokxbE8nnoXwBle37wTb4RWLcyvwIHJVaLVg6oN\nRI6+6IVislttTuYjkXUw9C+2iuQ+Rk1IsZqH6/2TNFpZTAvYqWCbfOGV4UCk\nNWV60UpeVM0MPYTiQVDQsAwoFL7haSQGie+EQ13TxetmeB/rggbHh54szGoy\nidfECZtLzq2hySl0Wrq6FFX3+dYdjjRzshAtcBUfaBT1WZh9HTp4H7ET5Zri\nM59u\r\n=0L0i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHdkzTZP4+0ZjIVYO4mtBlsFXvEQsbfRKH9Cd4J0GDMSAiBnah1xeyBHGBiigJ9mGGki2CaY68Qp+8dEK5EfYduM4A=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.130_1622249990743_0.22547017280654735"},"_hasShrinkwrap":false},"1.2.0-rc.83":{"name":"@leanup/cli","version":"1.2.0-rc.83","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.0"},"devDependencies":{"@types/node":"15.6.1","@types/prettier":"2.2.3","typescript":"4.3.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.83","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-+JIBJd+D/fTHJTdbv7YqCa9Du0IqlQShuMAqtD8gACwvOjYQZ16sDHe3vBYkZBtcS43gHg42dDicqb7XmQztjg==","shasum":"b775203159dd50796f0d64d5dcadeafc732a9263","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.83.tgz","fileCount":73,"unpackedSize":148355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgs/qWCRA9TVsSAnZWagAA/IEP/ibqHb/dDzgPX7LHMYxV\n67tum2HiuIaCZuwKWH1WSxHsnLQaxiAxepUuw5GZczYtEAlhePoRHA/xgcIU\nP7Z2kw8Y0OTLEuy2oqLJPaTIU3hm4+bU2aJpA8D/xpGxmwLwYq4vhhSWZZ9/\naT3xTYr4M/iMwnI6//aRRk2g8L2WDIobd1VKRcScqDeAqM6KWqLBO8Ex8RTq\np7elymCnlQGaEgD3weQuz9qpffczGcUr9CHqbZrivOIzisI9CPQuiOqlk0lj\nRX2FmGBopybRgQEPHkmImnpl/QP/vOFTJb7o35BneaS8KSjm/38makQI3qk7\nJafadMkTYBl4knfZyLbIfS0Gf4GVYxqf8fI/nUBjkPx43Ji+WDXG/SpKjytE\n/O2+LlJz6UQWb+H71KTT9URZMAIipSyygILhT//K2KrLm5wIa7iOvkdHfyeX\nwAI5/MkhK4y2EQ/SOHEQlge6fm8G/yN7S1CFG01sNQip0D/6cj3EA2wezXQW\nwzyDS0iMzsCutr7kfyeThpRTN3jEpLcXze/O1KeqfcgYFp3s3L5nxBDetEXX\nNiHne6QLxQVFT5zJqJDMmNFsw7NQoCvDU+lsY+QUkDzE7kK/ZInayntK5Gbk\nJx6svgryHCeiUn9GoKlBn1UJPyocFcPaArye2TUbgl28JdzAfiOOPiobsuF7\no8vr\r\n=cDK3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB/FcoRLJHZuplpM5ruwmVck2N2feqtnNJj8IFm4dSrDAiEAjX3AXg25/nxixB9famAfQ/TXaWKcGPYYfUKJeqpHuEg="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.83_1622407829550_0.10590004033379796"},"_hasShrinkwrap":false},"1.2.0-rc.85":{"name":"@leanup/cli","version":"1.2.0-rc.85","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.0"},"devDependencies":{"@types/node":"15.6.1","@types/prettier":"2.2.3","typescript":"4.3.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.85","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-QCJk9ZK2EUqy1Y20ve2pOWvHcV9HehgormueU2jXCXDBCgkzA3OP1U0CgRL14hEpd/hOuiaLd91w9is9piy+rg==","shasum":"179d6cf5f83b77c78b1997ed8e2d77b559a23d33","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.85.tgz","fileCount":73,"unpackedSize":148354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguE3TCRA9TVsSAnZWagAA54EQAJY4d4e1tTjAumXjj/Vv\nzMPn3ZX+xPzkqhPh03vTpw8s8sZCh+4uYzbNS3VKWUDVdTHL6ppdWwGEmn6C\n+6dzdo1jYbwUf0VmepABSp7nNdxmc5612gDjb1xC4ukPvqPo4V94epaxfKCI\nqtsWORTEaPDP6Q0kvl5Kje0v4TsboL0wIawbgGhTfhoa9h/Ahw6rd+MSlZcP\nj+r6me89XgF4Z/0RfDHKGZlJ3y5/ijRbPfofeM4X5//kvGj6BJwzYB4Tpnhk\nSK46VVsXW5yZBlWsPjSNkMjvdsdHB3GxBMJbkYbFHnEGyWvTeRWqwQTMJf9X\nIJV9z8gpkgRguUXOvVgRDFsD6rv8I43crBAKjzzD9SU+80ELnjM55hw4aAWd\nHtiYvwwVIudrZnNox8ggBSpIDUoHiIYzlxFyPDTIL5HSuwdsPEvFR1TZeFmb\nzV8WED0MAq4obS+n1SXebaN+/v1WpAfCAH5KUhaajsXIsuhyPA3/Fy05SCBh\nD2a4Oe4imz6yD9UJDJ7vHQT9zha8wL2rQQwePIcozO1YegMaaliIDLZ/brHK\n9INyQztOavOIAKYtU4dg0dgZ6nBcO9fTzm9KVtE209wO+YKgLugzbYo+/w+v\n39DnlGUSvIA785FKwd2AI43R3W6ZGGCv/cufcH52sklzyzh/uag3zuI8YEmd\nlVHF\r\n=LRNN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUw3yd2BfhVuT/4tqurvAtBPyExJuZBWpSCk1AZWVn9AIgER6B+mjZiB6YBea4OL0RAdTweikZag25SCNTAWSCC+0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.85_1622691282925_0.3476534810995868"},"_hasShrinkwrap":false},"1.1.22":{"name":"@leanup/cli","version":"1.1.22","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.0"},"devDependencies":{"@types/node":"15.6.1","@types/prettier":"2.2.3","typescript":"4.3.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of @leanup/form](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of @leanup/lib](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.22","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-BMeltjQs4fG1H12jfxRfmvb16MU2GaZd7v48GJJIgo0Sjow16xYHxh6IgvhLYpEdBI+4FgMD3LwoLsQVZjMw7w==","shasum":"6c307e4cb01a979e6c3e631fa0e9238c8f8e18e7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.22.tgz","fileCount":73,"unpackedSize":147244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguE3oCRA9TVsSAnZWagAAISEP/RU9Lv5Gjfjc49WblVFq\n6pwvN9sA8rl/Ge26AZCJsYLLxWzlUAK9eeXzssxMSWepqeZYoK4hoWHIU6hq\nfnxfc6JG0fHdnTR3eaTLFfMgZ2bUlt1rgskl1jXblzKl+6C2/+D8JYEwiKta\nn56hwQW4sQ5Q435rc1QTecRGQBa8vbaKnttjl/wbygGHDwnc/behXokBDtd3\nu4t4wWZmzF4kM8Juw914mPQnv5HvZJRUbH5QSrHKO/InqozueANYlA1+4Y9I\nQ3qIJPnpX0Ohmm6+72edqeYdPrLAAD88hVPeQ8FGDjj6nT9i+RO/AUHR1zpv\nLKibsb173m9i/kvFdDJ3+8LpSsldiUxKByzjrwoB5TaVeiX/hLc75S+x2OVY\nPtELSod/GcNlW5HF2eSSTOaI5cMcTlrjpsUTaKK2idhTz3r3YYoOkcWpvSmy\npggzBjgDFgubvqcHfishdI2ClMXAJkz+M/JghwG4ASesj9B+4hRZXUg03Su9\n8op+v26DZk+V7NEai9sB1sWaNmPVsbR7p8nzPQmXElCsN2NDuJtxh6QddXA/\nJZLxW1uCXCmY+SmwdUi2HQjzfZMRrlxFopHCKNq4uC+iMhevcM4vgdUWtuj+\n/6LGjhpSuch65w2lseEnH2IsaT6rNAVP6UGZJiBFjfiDVw+RXq49B1DRWQdr\nkA7r\r\n=R8Fd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCW/ikEeSmuuHyZczyGx0HiT+h2Hi/LGg05XTSJMieGHAIhAPk6WTBEyzvIDyLAORdlrkeSgTZ5F+6md9lYIxXr/ClB"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.22_1622691303994_0.4033367883006156"},"_hasShrinkwrap":false},"1.0.131":{"name":"@leanup/cli","version":"1.0.131","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.3","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.14.2","@babel/plugin-proposal-optional-chaining":"7.14.2","@babel/preset-env":"7.14.4","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.131","@leanup/cli-core-format":"1.0.128","@leanup/cli-core-lint":"1.0.131","@leanup/cli-core-test":"1.0.131","autoprefixer":"10.2.6","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.6","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.0","postcss":"8.3.0","postcss-loader":"4.3.0","prettier":"2.3.0","sass":"1.34.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.7.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.6.1","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.131","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-DICa2cuqd2JfMbw7b4uzh3wvh/hlNAMyEWha/MZhtCZIQ5ruZ4wBcl0c9Te3UZ7hhNZ5XWhcA9SDtcyYsmXIDA==","shasum":"88ff55fc070693c0fbbb866c92bbf584bbf05897","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.131.tgz","fileCount":64,"unpackedSize":152159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgv3ydCRA9TVsSAnZWagAAY6IP/3ReZI3M+jgJMV+evRjk\nDHYP5rldwbzCUgxPys6eQ6JgQtaQaMeLPgSD3vKALG5gVfdFJWG4jBjf4RWb\nNE5BTcwzux9sSyHIPe/Gh67MgDzkjIzwKgCcWSB5XyXZ2AKODeot2ikoZZT/\ngn4s90RrnzcPfDPjH6xhed3JbEdScz+2Zo6xr5maFBv1MwYbMTl4fGaih/NL\n8ul8BdL9Dz36swBrvf+UalaQENa6YKodt9CYjQ4p4YM7MZVjhDmiMF5W2GRL\n+TXBDH1t0YS2DYmpx8YqMHG6NvO+PtVYj9sjD8VSv5+EzdR5EzAyie0LFHY8\nGW6oqQb8APPzTMnGYUPCYgzPjdhN5UE4cC4+gOJlEeiwRcVzuCqEhvNqBRBw\nje00nyXSkBjDNYtScjjtyC2Zpb1QvMLKK4gDxVZsAmeBAbpg9p9f+g6PWqaS\na+uW38uS/x6wpU9eQg7kZLS3MEiYFuSa79v/TzhzMD9gnJ0uhUxD+yMf7C5b\njUZwCe1j8LSX0pZaBV2TTKih7hz4mC8Al60Yj/LOolb9Hqy7E67bJaetbzfs\nL1m14pmaynx3q6PQKi5DGuVJgYzi5wlVhiSyzohErEv0ZhrAqptRqeqZPD+e\n/G6wg++vuyoqGFAHtc2/sqn0EZ2yGx47iBhDvUREDbL5VFulita7i2V1iuG1\nzNHB\r\n=YgiI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFvHKBAHJtgeUUV9/jzZSWKML3t5M7m/qks40XPOzYcuAiEA5xJyl5uuJDvP4eNtc12GWV/XOtyoUQhOR0IdOtJUmBg="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.131_1623162013154_0.3230559974041318"},"_hasShrinkwrap":false},"1.0.132":{"name":"@leanup/cli","version":"1.0.132","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.3","@babel/plugin-proposal-class-properties":"7.13.0","@babel/plugin-proposal-decorators":"7.14.2","@babel/plugin-proposal-optional-chaining":"7.14.2","@babel/preset-env":"7.14.4","@babel/preset-typescript":"7.13.0","@leanup/cli-core-e2e":"1.0.132","@leanup/cli-core-format":"1.0.132","@leanup/cli-core-lint":"1.0.132","@leanup/cli-core-test":"1.0.132","autoprefixer":"10.2.6","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.6","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.0","postcss":"8.3.0","postcss-loader":"4.3.0","prettier":"2.3.1","sass":"1.34.1","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.2.0","webpack":"4.46.0","webpack-cli":"4.7.2","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.12.2","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.132","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-YNuGoSOza8wE5nBw4K8ryqLCKVr8fd9If2JZpwTZ6h2WnWy7W7RRlfnwgk/vzTkf0vohyXr7r+5qOTDu14k6/w==","shasum":"5259da9be2432db96d7de053aac9229854e4e9bf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.132.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwFpHCRA9TVsSAnZWagAAvNUP+wVkCN+xFgi4fFD2GNAs\nkYkfg5VU8WHH8nQ98J5G5Fgg0wZxLI1Ojijtd26WmqvWf3Mpa+FdPt6OcNIe\nJovv9f6ggr1NCvmTFQqOPgYFGct5DH9myhxaaDigDVuawL1oOibZW8DI/Cpm\n16SFxzPyA3fR4wu7o0FwPGK2/qU4o+uLdTlyDvRHMKBbWOuuFP0yCWfMWJXX\nkkaW951gRiLiyaBaSpNnnW3zwt3Wst4Egtmc/MehYvx2b8Yf4mv2/SuwpzuR\nq33+zCF77ffOpagTGRxqIRw2nmRBYHpnjGm5uQ3HTQDbnX1WZTbTnbntWU+w\nLS7F2PXWwmpgl5KjK9sn96nW7kE3D+5WL5GMIfp0AXEAAj0CiZGt5s/0m0Hy\nh+FKZRsD8lTDLze59XzFAeQpX4TdIvKh39T5RsCOXqgMr0+9PZ1scWdPL5Er\n1HnJHhCESR+kVSS24yeWXdIq+B4y5cEE57QvDjG0YA88KTYDWND5EwnTVOtn\nsk20GS6Yr10gaYN+2m9MtAEiccTQbEbI2roGwxXm1iHAp3Xw9bPT+FoHS7it\ng4z51A6L+urJ9IiawBpJ0DTMJq4bnbwSehC2jR+5ySc3wJzNlCeBftyGRv9o\nrqaozg/9xV/CKTHJAH33YxyiE0mMJSSYemykYvtCTr76ZyHClWHrEnqz9WDk\ngQne\r\n=W3Mg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKz/Wa9Z/h98xD9Jht9U/yihH9fGVV7qi8xThbJoiClAIgVYben3TIspLe1CPOMlhZio/fu03LPvL18DBG4flgvH4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.132_1623218759460_0.4978414482465525"},"_hasShrinkwrap":false},"1.1.23":{"name":"@leanup/cli","version":"1.1.23","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.1"},"devDependencies":{"@types/node":"15.12.2","@types/prettier":"2.2.3","typescript":"4.3.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of @leanup/form](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of @leanup/lib](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.23","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-l9VeSWk59ya2F14mdVVD5Owu8LNM7iWKMDKSDqF+QM2Su7vYMtvb1lEXjNVEo2eiyNUV7yiz5BWzVWmDwe4tgA==","shasum":"1c9b1ab3ee1934692bc1e5e6a925452bc239fdfb","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.23.tgz","fileCount":73,"unpackedSize":147245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwFpoCRA9TVsSAnZWagAA7NgP/3vwc9iBIB5lc17ifpNl\naoKKMG7cxFB02pmZVBpu0dZfw2lTf0LPdXoeKmbqgtKTEAwHIboyaNub65lp\nDLfg8Q0cayD0GU54A99awuY0UlVh3ehllPOEJcnwHcj+l2mCom4yPBfOOiLa\nl+n37bUYLQ5oUV3Jl1YSJAZsQkZZ+W+xsc8DnIPif0f+QJFwLcn8yZL1hn02\n7F5KokvdQeZQdcy3HFGT4H2V82q3Zg6mcFvazs0hyfaZ//TyubAwJo5yXyxK\nOIWRqn0WeLKIJ7sfyl5fw4hd2Gjnn5kbiowgbwMj2sMIBUXKRhtxQOZok4Io\noR6Jb59bbwandCUdDFFaZd9IM5SroYZN2Udpi87TPahYyZ8//m2214MTHbSZ\nFKT1I3lzPQCIO0VQ6ku4TH/bjq/SX1ssi0efYdWBNJuQ0Bq983V6hbjQwjEE\nN/VwW05z+3vkCysJVg2rXxvMYxuzy2DMklaLo7I7R0hJ5kIHVIgGvj2f+dns\ni71heIiVQhJduzRk7JN+aUMtcGC+rkcrTWWCCs26EMCe809NUYVxQRoNCoso\npfqfAIqgElddLKD7f0jXXVm2TdOqdJOfMLA3y8ZkeLxO/3qdZucSKH7YBfLK\nOmET5jTOoo4Eyy3dJdkj12fXjlmLx4pOd/ik+Ql5jrUU0PjMGlSqMtqUdWmb\nYMqS\r\n=Vxyg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYp6mxSQBeAXLshOsMA4C6xbDrWRWpe8PFOpnAl625yAIhANygi8bqWDcM+L8K0QqAoyp9tMYz7bSWKNd4Aswi0bmp"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.23_1623218791960_0.1651808501475136"},"_hasShrinkwrap":false},"1.2.0-rc.86":{"name":"@leanup/cli","version":"1.2.0-rc.86","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.1"},"devDependencies":{"@types/node":"15.12.2","@types/prettier":"2.2.3","typescript":"4.3.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.86","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-oL3R7WnncSMLjSDnFWeU2vG6v7EA+jr4EHKzGG/PFow36WezT6XVLLPsjRB/LWGwYjEuBQScYdOXiqBcxof0DQ==","shasum":"6fb96bfc9cce43c973dfed70fb779b94e5d5c122","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.86.tgz","fileCount":73,"unpackedSize":148355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwHDnCRA9TVsSAnZWagAArmMP/ihICae/yi3oxmfcmVcI\nBTl5HBxQkySSLRWBluPodspRt7J2dNqvfHOnMG2IQCgedWfRVvFX95O+BzMG\nd2jj887G1wptJJ/SgjtUb4KrcffagnLggQELfTULusIJT2TCzj94MEmL8j5l\nyukxalVzAypIdrY73J1k9aaemKzrkYO68GWBln1x42SzjhUxeI/wwS6MdhYA\ngWuvG8BSNHZaavt708IQjmgNZxW8T6nJW2T5PakieNgnH40WD9Ecgwm3LvN9\nD8cOcvXVlWVWgN+3h/TiQ+SFrdZdMmoGVvHbLF0MGPZ6L41jWkNjpFiKi83T\nO3538jK/OCdDLNvebhHw0ayCQuhq8ee0v6StIF6QReI2A4BUzc/XmisU0SZt\nuaq6xB4qRglCTbJBdrqbLIVYXo6Gh96Mzan6uOSvHFEyx1v8IRkNbQ37svm5\nBj90rMOE3rjONGMPppyRJRiy1eGW2O5Tlf48hNlbX424r3SVV8zqFWVAY44O\nOREzA6jkynS/gqj1TxpYAbZjcnkNvS6O9M8ddgFMV9d9A0SHStN0XbiNRywo\nly8eExrDVtIbBFUtVrSxKlXa+AkCD2nhysuyezIvArjJyw49JbvB0+ib15hu\nAHqvi2L/CP9B2ud70AcscoACXekSBDdffhB8ofGrGQUkmkwn7tJWS0k7bil2\nrz8l\r\n=9Ljs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpJBo0GEzcvwNJme3ZD06XpKp3vcPeVTSaRhGi8HbkgwIgL1YhJOrX+IXKYRxCOd0IVUOHK8cPO4QmAKiCvWwN3KU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.86_1623224551390_0.6779997794649595"},"_hasShrinkwrap":false},"1.2.0-rc.87":{"name":"@leanup/cli","version":"1.2.0-rc.87","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.1"},"devDependencies":{"@types/node":"15.12.2","@types/prettier":"2.3.0","typescript":"4.3.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.87","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-R1thOHyh5O80ub3JbZhAgRLm3uwsbw3UWLF+upQia6+CX3CPjIKH/EZ7/Lo8nDqSnKn9c+1O0UaMh/xVx5jncg==","shasum":"685b158c9fbe03086a05b93a0a55be5ed7a86c81","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.87.tgz","fileCount":73,"unpackedSize":148355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgykVJCRA9TVsSAnZWagAAOtUP/idVqc3jyrrw5ERWoxGo\nv4qDN285Ym/QiJQGwaRAmbz//rM1rzmDRcd9hZ4omqte2XRPMn7ZPpFnskkU\n8C8fhubuQbNpJJeTOXY/xgR9cMQp0hmkkpRRadT4gu6hMViiwp3dnPaHz/M7\nGNPnfDUqu42FLd2GDYa3nMzaSrBnUV63vobItswoTkWZI3261A0LOEGWjZkU\nKJ6QbqjPGQrjRaQkkSOKrf1fyIDA3L2A96/MDzFNKoqfXpAfiwGRk+Fe0fsz\nPMBOjpoerA5hTZHzLWTzfOwKJrU6LMn5sSWyETAS3DgeomKoF0PIB2II5M5w\n+h8UjVK+4em642+oof2YqkSbXl5WVr2M/qwwbHRU0gfjdM0/IWaJyHbQNrXA\nRtMCbpLI7YFR19RZoduRbQdBjf0f3R2Lw9OFeioj3UjiIuMY1e+toTzAF8uU\nTI6ULdfscG6RTO+DybCfsxlyqzqV1zNayuqpD3n45fErWzhD1O4jXgAMF6RW\nfUesA4FYuUU/tRnyaZEq+U8i/qiDd2t2gwesE2LBAUYULwxZ97ppAU9aRimW\ndKbsMA6miHwfpe4Idx0MAPiyQ5UUpl0LtDuzFDWt7vekSYxG5nTG3UnaBrU/\nNE49UkcFJR9YTph3u7xGNSbZ5ML0hShksoLAjgrrkLWkn1LR4lRo8w3+OJfo\nQyq/\r\n=ytcy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQ47XqXRTFDdB57dAvOsj57GatsVU0KIX6JCRMdHt+7AiEAx74u6qFSRUOtCu+6Fmuh+SEMZrNyLc2B0rtRXuH2mQo="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.87_1623868744507_0.638365132613488"},"_hasShrinkwrap":false},"1.1.24":{"name":"@leanup/cli","version":"1.1.24","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.1"},"devDependencies":{"@types/node":"15.12.2","@types/prettier":"2.3.0","typescript":"4.3.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of @leanup/form](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of @leanup/lib](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.24","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-pnowdhlY1nyd5Oyh4UAdz9FnDwDniQNZ7UGx86Q+F5wRfZXcRvaJ0UQPLckyebulLhLIDI+Y8oNWQTw+c5RdrQ==","shasum":"cd20b2f52bb2ef48a2ed211a75d06895919d4253","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.24.tgz","fileCount":73,"unpackedSize":147245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgykVmCRA9TVsSAnZWagAAB5sP/A6DsRYsQrfoycuZP9Ox\nMRbQZjfe8fUH0t+Ii+R5LwhcKa/LiZp+hYaDgdOJY1zE1GGWNrZYbj/8XRTz\nO4uaD0OILd4/7LCuVnlDNpWKNHKOVBggEA6Hgh2fP9pQa9enN4lzq44pZBvy\nDDKGVeNazBOsa6F2KBn2FtC+gJwtAGdkNKLeLsTzLDsP92WZDCjw3zdKKZHO\nbChRVuv2/p/D0BAcIlnKO6JYA7t/zxqd34vaUYIptbAvkqzKNlCHL4tLLE7C\n3a7a4jJSQI4d7fpOPZuuoURtpvtdSrgtu9BxEo8r4Rsg7gpCfm4gcqQUSWAE\nBcW39b2omBYR5crb+kActvzb9IIv98CKMrJ9L/LcfSqbPhpavEReIjh38jJ5\nyD1nnDNXYXAGQCdAply7zwEau1qhFlMf0+XG7t1L52iuLeMlzYLOneyiAaUV\nqnJp5b5mPFOdOG1LCDJiL6u/DB7wqrNa7UyDugv/cSlxjEVm/135fTdXNPf9\niMw+zxaWQrj/oyoPZ36DAvaTSfhshX7AUaxtWrU8O4KEjywcPITcAz8SIpC8\ntyvVYoXaYhjctN0HXBJ/ltJfIZpfXjAgHTsAhBeBiuoGla54C3vpQ622ZGfG\nrvPTh68fHEovmaZjGVb9Mjh3kNxFVXVwjZGkKaI4alJdmHnxHhObaNRcWxmb\nbLya\r\n=4HEI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGTgTg/4/0S+xWsLy1tm5gc3j+sT1HuY8PFgWE+9uyjAiEA4Q519nLSNKHiwZLy3Tw+vpT2/POPfjRRtizmR7W4wp4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.24_1623868773686_0.4625434200717913"},"_hasShrinkwrap":false},"1.0.133":{"name":"@leanup/cli","version":"1.0.133","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.6","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.14.5","@babel/preset-typescript":"7.14.5","@leanup/cli-core-e2e":"1.0.133","@leanup/cli-core-format":"1.0.132","@leanup/cli-core-lint":"1.0.133","@leanup/cli-core-test":"1.0.133","autoprefixer":"10.2.6","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.6","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.0","postcss":"8.3.4","postcss-loader":"4.3.0","prettier":"2.3.1","sass":"1.35.1","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.0","webpack":"4.46.0","webpack-cli":"4.7.2","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.12.2","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.133","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-8n1KzKwck/66vbkkdBTWCamKAvxRVUl3E+BHHJxuck7ZroBDT1jhA/jzNQLXhma/WLfzGEFJlnxPCCuBdPyJFw==","shasum":"15c21c2c408e2f6c61dd92bb94cc32490fc5e822","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.133.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgykeFCRA9TVsSAnZWagAADSwQAKAIFSwfWkZiNIx6vJiz\nph2NJnLZKQ6wKFZ+OR60M7KxlxMVWgGLjJfPravGylvN7JtbmRcUM7tWF5i7\nOaKwIiJUI/MPkdCdwGyFvt9PSn96TCn5NFalfEo97HbySzq3AiUCBGfNNS2Y\nQsOiUvK5O571GX67KrP2smGnnrOh+/gteFS8qCrALkWHHR5TqPLP3Od7KfXj\nmlShoG5An4aOGZv0vrG6sHmgFMrVoJdEMs1kTocLaLmxUkQXApS1Ng51TG9G\nDvb6nP6BeYa7HfkShL71CrOhnCzMejNY90aHLpeCuPi3EfSz6qAr5a69FhAE\nwJQo+1FIU8Ly5SbcEENm8X+weNkOE9vHHLREiHun9JBNz8yKDHbGkFwZgYaT\n+K8NrJbAk6LmWESAbpNwmYc+v456/MO3jBCENRQv9Swi9FvktBPGk3m25mV+\nXzdfEaEcZRLRGV+B+tCnC5IMNa1rCI/j8WgiEa33EaSeBfofSkDfrwaw4oRV\nbvb2i7p/bfjWFaYJLKo827cJV/fc3QYUDRcMWjA4I/W7lXziRY0InppAedpd\nynNu7tFdSkNL+61ahrGTEvL+UAAUZ/fZuQDCqQFel0LuKxKgNFQjkdPJbUsd\nkgh+00Be+BLWf2a6QMoo5CjvorJxhFaUQP4A2T/RP4ZaE7DfIxxA0vC7QmRt\nj8LC\r\n=CdwZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0vz/rJ+xp6uMTABGYQKdWt7949mo0mgZFClSD9CFmjAIhAPMDVxz7emDzrVCON15eepdJ0Vc6Kff/8l0OKYwS7X25"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.133_1623869316869_0.7695923332471808"},"_hasShrinkwrap":false},"1.2.0-rc.88":{"name":"@leanup/cli","version":"1.2.0-rc.88","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.1"},"devDependencies":{"@types/node":"15.12.4","@types/prettier":"2.3.0","typescript":"4.3.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.88","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-QSNi/SeuVD2WrWpVvafekUmE+wqZbzY43tOuF8UrJA5Ktsu55/l2YUjYZSLxQ6k4Y/9b08sQydk1br/WI3Ad8Q==","shasum":"076b23c2b48f24495acb481f6813b81aa44a213c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.88.tgz","fileCount":73,"unpackedSize":148355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7P8YCRA9TVsSAnZWagAArMoP/Rg+KVw/j++0xukH7vKG\niUCpSIm+25PCqmyjpQ5S4WndPbYYKctPI1fnWWGIGyoLscLi/Hb0ApQF9BqC\n5ibWf3NnC4eDRYzoD407Z5d6eh4wnaLY3EFS2g+17Aflc1mwmYZefRteN4uM\nFiUKB5/nMQn9+dCeYIMAxD6Ac8EY8c5hA6Vi3klpWjc0iZCn0mqMti2LpvmF\nSVNf12iDZYXStS3fu81coPZgpasHF6wIXHv7PoE0kEq3sxorQeIpKCWA6AY1\ns3kbjfzbpqCbx5M7xSexdLucIhvtPax9+Ov5Q5Ct5RpzAtHjZoOzqH+LO0lk\noFliZ0TChOHkhFsE8nPOdjCFrWLg2+O6p/Tf4/m3JKpj6xTVo9uMR69L7zzR\n8xOwqxW7hclslDMW0kQQJu5OnzGdGeGnOIDv8nREo+x5ePcO/Dfokb/lGscl\n7QwXPMyabNfQYbUp5fxr7q9OdvV2Zs0KSjpb/Wyb4yXCjLugaXI9WvlMpQpg\nTv/yHkAyF1UALV6lvknagrltQbKZZKVtsYBm4ysypMAoT4FcjydN1IZtTh4P\nXoGR5sieS+mp/9M/WVSf8MtGtj9lmYMO0oN+NPYl59SetwryY21GN8mYoP6B\ngBqUAJTwNEiQ3xN35PMHhre2XzLfcmHKoMOdj4AVNA3nZ7agDWxh3/Cj5nPe\nR8N4\r\n=PItj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDhbg+b9NMFXUWKv2MOkJSUjWn4fFI0cbGsrH095KMfIAiEA4qQ6mu1eqRmxFGvqz5y19LVSFzcDKCDC5yl0fY3lz1A="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.88_1626144536359_0.978190388325386"},"_hasShrinkwrap":false},"1.1.25":{"name":"@leanup/cli","version":"1.1.25","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.1"},"devDependencies":{"@types/node":"15.12.4","@types/prettier":"2.3.0","typescript":"4.3.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of @leanup/form](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of @leanup/lib](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.25","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-pgEHZzQdMDKZcf/o3rEpcmkM1TT9X0w0EGWquB03Ngm8MiI/9oE9xrwyx41X3O8/C5R2w1BqPrruK5XGnyCTVw==","shasum":"82b44aeee1a4f3502f8cfd5240148b1c06941805","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.25.tgz","fileCount":73,"unpackedSize":147245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7P8lCRA9TVsSAnZWagAA3V8P/3jLyBcBHy4SInROlIWK\nxDE4UB4PH2Vco26YhQduR8qaHSbouIWW22KLAwfgEIQjxA8H38XBIKWc+lls\n7Q84xLuSrms0jh35RqRsp8korEH49BDYT9O4Z1GFqoiwRI7kFjlAMeErMDO5\nGuvyKo6bMs8dD/mO1KCJbFTuDTXlD3m+91ytCwdUMIDydKrStbkNbnmoO0uB\nG5IINaMN23J8myZuxzyjtgnZdQ7jksoIJHp7ltlGvsjxX4Oz9HGavwMuVQ8H\nEiIEJLh6DCXm8nHeWviEUo2rbZnwtBOCcXlAfcd4isH/uAw3pLs4v2Di8svu\nKwhfW6b8oDVR6b3NSCFDX3jSNs5uFt9PPhsMr9EUh+ttKD7O56Ois96V6m+h\nqiRTwjG7c/RUW7EkJM1V9mBfw3EalR6lqOxucUUfUDyAUd+tziixC9NBY6NY\nHiv7NwLuWcppjITLkZLmuMdZXPSDZX8F8S/4iaKkCDVpjeerJtKyCTED5dWj\nBpQFJj9LoPj/a7VT8PZKjX04NgJ42MrG5eGwZhhLPb0hVK1XNAxpCD9u1Oap\nsys50CWS97+w6VMFcPsR7MioX8twynZpyFLqLPWH+vCaVjojuE+JZXS5fRJM\n2eT83gmZq2CJ9v0JC9XhKgeN1+oIgSNVqkb/n6PUpPOB5g/vh49ZyMlGY3F0\nmkxy\r\n=xEy5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAjt82MKH7OkSpGZDIo0NwicEmzlSS9yvRgGQ2e+SzxBAiB0Q2tka+XDkyW6hW5IaGy3q+W+dPt+eJMC3Lt9FrvdsA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.25_1626144548871_0.9488499495806169"},"_hasShrinkwrap":false},"1.0.134":{"name":"@leanup/cli","version":"1.0.134","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.6","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.14.7","@babel/preset-typescript":"7.14.5","@leanup/cli-core-e2e":"1.0.134","@leanup/cli-core-format":"1.0.132","@leanup/cli-core-lint":"1.0.134","@leanup/cli-core-test":"1.0.134","autoprefixer":"10.2.6","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.6","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.0","postcss":"8.3.5","postcss-loader":"4.3.0","prettier":"2.3.1","sass":"1.35.1","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.0","webpack":"4.46.0","webpack-cli":"4.7.2","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.12.4","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.134","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-DC8dGkoIDROCG1Kpcv49vFO/G/ltPSnhq35AoQ3u8U7sLcaJE6BeAXvhuXejomXyOHyZvifKpxaixmG6PNcZ6Q==","shasum":"ee53d3cb2fb7d11a24d2cbcb869119b92be401a6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.134.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7QJJCRA9TVsSAnZWagAAq9AP/jdTJneoVy4FalHM/gQ6\nLoWDc7mbLnpdwTYbkwiN8FVewAb1iLfJHUOief0Flwc7DMeXklt5UhbELsEq\nF05/wspB0ZEaCMwcdZq6NvmeDzPoHK3l71JHFo1+D3nrlcRX4qcGI44PL9dU\nnEfEyk1p2VXYDYwrUa4Aejlh1tIoRDz7nFnVtUf1npuePgakioBmuRvbRJ8N\nhYcZwGB02lMeD70tryLGwLksoGJa479pPM6hejt2w8KDJLmnqXxNY3unqO4t\nGz/7qZDPxdm/BZOB50RutRSHWuufyTUWQpGT+HBID4Blr47Sr1ZCVDZTTOcn\nYN4UDowfbYzr07XI5l280AsuItne6jmK8Tx72NmtZSfajcGWvlk6AFq5hKs4\n2Ven1EWJAYlwslkykhdmZmZtRYAyMhiBmbnvIZrhgTb95qCODXMRaEFQw0Hj\nZ6kZwWqE0WxCV5z/hgs/gYIYTekiuiZYhcr6Hv2LGJzAFZ87sWyPXhjTG2Np\nXyQfRwPVVuPMfLHAuRHipzYeamSHR6xrdRbojIWm6RuIIzPlC5YzxXldKe7N\nDdvkF0lX3SnEJ/xS8MgG46SigaAvGZ/41OFirX0+m33D84rP46fEQgxsTQkH\nwH5ZS972qnvyVKep0oAdHoOZGIpQiL6ie9ly45zH0/pp5U9ehqhbAekyW9CH\nqLHk\r\n=t4Ie\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaA5J5zRV/UjKG24vrrgOYIxpfw2frVRB0F/L/0j1zFgIgftPI1k8rF8yutW3aN+PyxKIYUO1FJD5oFoK1zzmQZ0U="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.134_1626145353498_0.7852170494332282"},"_hasShrinkwrap":false},"1.2.0-rc.89":{"name":"@leanup/cli","version":"1.2.0-rc.89","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.3.2","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.89","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-uJoqFAjDUgVYK/M7u9x8R4CQ9ZsSnlyCrnzeW6JKAo59idEnjFntFW2MfTPR1tgvhgNG0kpUVhzoAHuUHmYunA==","shasum":"1762e22f131558a8798ebea55c9389abbb82fafd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.89.tgz","fileCount":73,"unpackedSize":148434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7mfmCRA9TVsSAnZWagAAb80P/j1iv+1nQlEVNpOVk0cQ\nuT0AHaWpZCYsLZek4kT7ovbtZ/gBp2Zth5rjevzRKvQhf+RC6oYB5bfrPNSD\nrEAq+ika+XKleTVQ5HicSOVkwhnghlPd2t2w2pC/pJj4mEN9J/4N00wP7apr\nMpMkh6Tf2veOdNF2HbjIPeSPrxnUuZKvKpPLz+yoS7a/V58mbd+3xxwasi8o\niTbrFmNAmv2hgKIhuWSTZ1iv2fqaxO1w98lIqbeTQX189jwxBADjBl9YUjyA\n+T4NPP5AkjugeUybHOH6NdazZ8uJB3qgJcb3wiw1mEr0uvc+mtjwCYqE6CXU\nzS31v3fiTcSc0Ec90DjjW0X4X3PKC5SaIb25vdtVfX3qC9RV8/geQtoYXKcJ\nPywrKU6aUhTh5X1Avq3sWMtz399DXCn1wqiocEZ01Eu47LhnyarN1TixzV9m\nuh6fdQ/ZRcGk0VubM1Nz9922DLjfWjZqC6kGvQuEUemu/p/0Ol/+d8ghuGRt\nXs/SJgGCXvJHtqVFga5b2oCDGGjNZirp03xYFzPCKMLTfituhmzewqPumLsS\n90GAMvSlOvXp97VWyNdfGck4wftnd6vAg0xyvzME/nms248ivNJVRCijnrD7\nm5pfZaoW9y+ga9a8MBntFv4USwgobhOWphrtkrEfyZ+5QjR6D3PsWlLx+gs6\nILUJ\r\n=tqOg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHZJzwA6xaXD86PGK+Szaax9dU5u7rSE6xpXK/wft4auAiEA+BYq6pST7o/DqIlVXreX3zQzjCBziJxkZLu+/GkDQKs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.89_1626236901614_0.08843396650384006"},"_hasShrinkwrap":false},"1.1.26":{"name":"@leanup/cli","version":"1.1.26","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.3.2","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of @leanup/form](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of @leanup/lib](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.26","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-5dZ4VbsuguGeN/I1AqyS7pJpOVAE9mVImGfZRjhPy86HtQQeNyzqSm3C91I88GM8CV2GufcGEMC5P27HjlUuJQ==","shasum":"05c47274412f15d73bfef8e6693b41a1502cbe0d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.26.tgz","fileCount":73,"unpackedSize":147244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7mfwCRA9TVsSAnZWagAA84gQAIzHO9j2aABjoSkaQ207\nnTFZU3YvwTGWp3G6d6IUzen0RZjXb/OPJf0YqTia0DpgEWnXpcLzqIA5qE/z\n3B2qT3QRzSSHK27EuiTmZMK6pvft4zt37FY80bkHbSYahMcF9S5i+jIExLhh\nVo6tVjXqfovaINm0Nsp0rpGmJN3uLehu1YTACE+tZMYWQIHCbUqKnH2Sz983\nSqvjR/Tx+9AD9MHU8dRDR95OXJaxvyIWZS9aheY77gKppSM3ylQ77SzWsysM\n6eVe+2JkjmUw93TaA49nOs9TeRD9w+zvJvUtuKEzyD249HxYyFs4/QR8CeIK\nK753K9IZ9C97aLC8Px/fvlkHJcawvF8+Pw5KSv02k5Aof9fZDUnvflSMmBtK\nxSkqEBh0UBRVLThmhTuqooEtxOdHqyMDMC7EGRJUHE2ieDDo+qjGrIy3/0Sm\nqz+SHWSRDg1dx8JF0+VJdYP2Jv2HDzGtzhSj33WUOPHxXUXzHxcVkU3NA8b2\nNYpAqARBq0fm2DWPTSv3sKEaYpRb6ZZrxxY478ZPDAZVB6XH1+Oi9JyBU+lz\n7xdUu6Ic3XPar8UxWPwvLZEyR2uP+4S+J8vyfKu9jnMX4GyfBOCUz0l5G0zd\nn3yXjB9johhQzeS4J/tmKZ3q2ODU2h4LsiPlLlTpuFEyTi0J/wi4zBIhVS/T\nMXVK\r\n=FWR6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDi7piLoPpqyIfY6pFQyWBC5dAQ/LXChqUHGWmkUfZN5gIgAaVDK6pL9J0VPYbYExNXzS/GX7ZVLogTeSuejldxis8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.26_1626236911848_0.13277821694199665"},"_hasShrinkwrap":false},"1.0.135":{"name":"@leanup/cli","version":"1.0.135","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.6","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.14.7","@babel/preset-typescript":"7.14.5","@leanup/cli-core-e2e":"1.0.135","@leanup/cli-core-format":"1.0.135","@leanup/cli-core-lint":"1.0.135","@leanup/cli-core-test":"1.0.135","autoprefixer":"10.3.1","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.5","postcss-loader":"4.3.0","prettier":"2.3.2","sass":"1.35.2","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.0","webpack":"4.46.0","webpack-cli":"4.7.2","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.2","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.135","_nodeVersion":"14.17.1","_npmVersion":"6.14.13","dist":{"integrity":"sha512-M4SxSWAxNyONSUErOBGUWUTEc6a4bEVW8Kmh7LMteHlqlpLIkkp8F2FqlDfTR83hDSXKNIsJoEWMNf4uoXVRdg==","shasum":"ee61de3fd11146650cc8a8b7eb6826f1a6d29a5e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.135.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7mgUCRA9TVsSAnZWagAAFRYP/jih2dJqJKdz+Y+y8SJm\nQuENZIKe4oOfBcuH7kag+ZVOgmAjeRoTJ3cz8oMhxUGoxxqUnIvYidpZLr9E\nWYFAj0Zn5WZN+eI6LBzICgEiK3gS1S/ACDe5otHERd3wJOXCs9jrUe0GcsAS\na8uDPn2AS5g5zzDUzV2s5AQM+FGGmnD+NZjsJrqPMf19KeQqrLl7GcLbP0M3\nYiH4TccjrFmMKedCWWZu1qUpVLOxn6fSU/2p0dID/7M/yT/pZDl5umhGuRCP\n3KfU4UWpUxvr7DgSVP0oS7wtzPzE063XvEESVXFyYB2bIzF4gqndr2ZW7kwv\n0qNzi/LWax5L2J7NHuVwFIllQrXC48lhp9aiUl/cGhAwXVyggRr/lIXCkNlD\nUGTBy4FAwWBGtvyVsPCKKKhAFkc35HGVchzRzpJcMPViIjyP1WMPGp6/XF3O\n94s71+ThTGiaBtjRNuzmgm6pS8o6v7DFJpOnZN41MoU2Eivjoyvk/38kgera\nAkUQWcuh65uXFdGzYvmV5Qnl6+LIDWZgzX2a2NPm/fEGafuq98AEfrebqPMJ\n2whLREtjuiXRpS3wPDNMR8yKM6XUN8973rY+46KPr2mzS87iY1m+rjG12FRp\nRVzS5Ao4BWYUOJBWH9Ho5eaqHy1WQWAQpuczoAngkwze2bhQ40NQacG/qzyM\n2yVd\r\n=dYKb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUHBF/NRJdhZgQEstFiOmplPw1ayF5JHINPzuewp+8FAIgFOEm9weRVDNJCQZdAvpC2Znv5LuXMOlSlZCHKihnU7Y="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.135_1626236948432_0.8747655610281784"},"_hasShrinkwrap":false},"1.2.0-rc.90":{"name":"@leanup/cli","version":"1.2.0-rc.90","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"8.0.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.3.3","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.90","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-seoSIXIw05TRdqq6ZgHwO1NO2CWCPjrN+u2Wd0bJdb33VMoWXMKbfGmmJdCVsMV20oRO1KWWLL1NlpZBb6GSrw==","shasum":"d2bfef2299d1fe6b807000f762ea77cbfddb64f7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.90.tgz","fileCount":73,"unpackedSize":148434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8oRUCRA9TVsSAnZWagAAbF8QAJXGUVMBvbx9kYksDZVR\nFviNCy6bxzAoKoJf29uADdlJqc6dZ0OQ5ume2eBuKoRZMc8I2T7VAUuobBFg\nSZE+BIZEOPAXrF+pE0Ta8O//zSoxxLqx+2EUWrcsIQb+T9IqzspRzNOUdoDM\njO+g2ncMeQGYICb+L7hF1g1sEnjOPO4LdW7tXM1f9zOQHL+xnDpQC5WOykMn\nmq4PKOMA2pzF4iycxmf51TONYtvC0UBSkq56QaYRSxqqIh0sxhKNC5NrwPnV\nqAnaD0nZ3ylfe9C37GbgvW53D6idYDbwtEZWumgk7VqJN0fhQBm95DUWtsif\ni1n3FwlrUum4LMI39DXuC7b/b7TL5XevMZFW1QQgDNzpFmjmEDKYRwztKZbt\nV1sON4CTRLdQVWKZ1vZNzDr/EFu7Qlm397yp0xtX/hybpCjwDQqgztjjiQ5V\nMJAuxr4iDzaB401FCboI+LYJGFQ+x4NgBP+Uy3B+VkNsybO8z6ek1s8o1Zdw\nGRxjIj5i2lpMdPLDWYt4CgInVp3sxkxiU0KiCY5OlCyyTtcAZ1Ql/wAInrrk\nbBHdVTI5mRsbE/ixeeLZurdy21eneIDqeqIemw0n6CZjxfxNTNtP4yoVK+uQ\nr5QPIsaELRuvCS2qPpjU5ynnTAYU6GuXlKG+IeZKTX9q6YOXDnOi7QbK0Ogm\nY7tl\r\n=F0Wf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAt0ekDPsi0eupsvFqmKB5RjOm3Lk4omLBdZcAIJX4p8AiBUkBs+DnYJ2vE9CVU0fhkr28bAvPiEJTHLdfvkvlYPSQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.90_1626506324533_0.9096963718309232"},"_hasShrinkwrap":false},"1.2.0-rc.91":{"name":"@leanup/cli","version":"1.2.0-rc.91","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"8.0.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.3.3","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.91","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-KgrndeBvRm/SdBinS9iK7VXgEOGUHfHg3MmdbRwKqBI4lhbyg9lweaf7kXqQaFIOjCIVGddANo/YpAiNW/KKZA==","shasum":"6828923ecac4612213e1b742d23cb1c47121d8da","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.91.tgz","fileCount":73,"unpackedSize":148629,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg80pwCRA9TVsSAnZWagAAHTYQAJvVIsNTb+Wq/qfoPa8n\nj4ID5Js4i7yu1HyePE/0iJV55jtFBq31M/KpsHUFjP+6xF3cXLgWmnGquD/s\nC0xSNQEGrJywOC0wSVmb8tRrCJBpR28CTadFIFt7NVfL/PBiyWYG5MJ8xttT\nZ1UHb1x4pUUEg+dlNeLBGffSxxDLVLaqjsGmKeRnCp4spnu/tgLZJ5J29CN7\nwkrRfjTbRo6UVo/S9lZwLRVwxnaK91E4XyvkrrlGfq4sIu8TfZD9LTY2N/8G\nn2T1mdnDwi/CqTLM2v8GuiugM58eqIrsqrvMcrCvXT7FX4UhHSbmTqAlG0uR\nUj58c2aWu2yBz1nBHjfCJQdnkh/Go4Jv62q0O52lXIIMQVs9ySl4ZFlASsyx\nz76IOJ5VuS7lcfWvbSrwUyeqLkttKMHMJ0VW0QwUFZg/jhNFDP9Y8prAvApa\nSxU+UIcTBkcbxOuWiC7aJw15uVJt1+csa5ia1K26JSHHZMVN6zBIjO3L8KOJ\nyoRsGuAzYFiY8NFg6tOrIzoLvjY4ZYrC0Rn1aegRXGZmPYBRjBLF8IHU1AS2\n+WnWm6G0TPVnmvfwD5A6VDAKcnJYYedMb2pjhVaEURIDvTWshMt4BOkLfXJL\n4XRycAFKqBniUXOS9Uovbv2q2xrGCz6YTmJDbIKTkVGo8ERbtkfDp3JeGWs5\nBlOk\r\n=ws2e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiQJZ7h5HG2MS1VLswyhs1p3v+2RauX972PPbNntj8ywIhAKIpChdAnQ0l4l0g9qES1m+rr1t/hYBQXx5OjpFfFOk+"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.91_1626557040307_0.13653068464967588"},"_hasShrinkwrap":false},"1.2.0-rc.92":{"name":"@leanup/cli","version":"1.2.0-rc.92","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"8.0.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.3.3","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.92","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-R3ANHp5itnUcfQo41ZHDX+Z7zOgZZWlsgaa++z8QntRBueHNi0uH10fGaBFcvFm04oKv/c6+1bEegPPC/fGAdQ==","shasum":"8da1a5f3fbf388dd3a09df3b797120ca18802220","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.92.tgz","fileCount":73,"unpackedSize":148639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg85r6CRA9TVsSAnZWagAA0rMP+gJGG/rQh4Z22itJ2faU\nnU3mh6gW9UBYFI2bSZeohh0/NCuOuJ2DnQaBET4z76IsnlCS+BfCSQBdwADL\nOyK30noyislwG+wBQ1IZul4H7bUeAXAqKMqnoH9lN2sULTmda4RaCgMRW8nN\npSf1mzCQmyzHl9bjlEetB09GNs17ifgaLGQI+nmHs59jlOZ4fIUrS6Ql9Ybb\n+QdvdYnrI1GdXMQAjYqwr8InRHlgMLcy5jKoaXA7sAInCyYXNDtbKtOKkz1H\nDQkr3S6rlUGegN3ySZF7kZq2xa/JVSNhChKaIrsrStsy2FisJcpJCz/4O79q\neeXN88vCiDNbAa33Cy9FHGz7b1trCehUtYDYbUkGdFKfjtD2Z3ySDZCsGv1V\nHp+OPUl4zzWP6ifEOIq8rS+KMgIiOq2xCG7Oot3+sjcldpxntpOwYtyPSLZS\ncFh8tSiV4CLDmyBHHdrj0OxuQLpHKuh4R3hCecfvoEwCg3bxrjQBO/WPlqhT\nTOqEgLeBeieOVXUMGzUePcVsDMnr2k2HDjyDPIECNXCiqeWOMkYW5Fnopl6b\nR4AAE+BkXQzKVYsCJtZ9zNkxMgT6jRKFTkBk7TPjsYHQb8QpCDMqDDgJTIYt\nEwyyCmYFWUA5Pw+kHOqgDRD75IPiEAnlXj/0+jb2hzycJpe6/7dqF1nDjYBp\nkw1F\r\n=EHxw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7+zSSfKAA5/6lpJ/CQYapEQF7doHsW9UawJ/Vbz5XfQIhAOmMpm7eIYrVlU/W16W+u/50TK7WmW4MI0uyjboM7Gnn"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.92_1626577658541_0.5486358625765568"},"_hasShrinkwrap":false},"1.2.0-rc.93":{"name":"@leanup/cli","version":"1.2.0-rc.93","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"8.0.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.3.3","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.93","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-y/MIoWrmnxpdz7X2knJZ8LO4Fj8ezhzFAw4UbVh+1FoyXIgjAEx+hitxJGrJ6bXKt2vyeVmfMKdayMyXSBcoOw==","shasum":"9b95cadd4437fbb27300710596bd0b00450fccae","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.93.tgz","fileCount":73,"unpackedSize":148639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9zYrCRA9TVsSAnZWagAARjEP/RIVOqVeE+DWRsSb0tBR\nk7RN1emnU6mA3zrgC0EkbohPlgLFCrp4OWoBQYjuLfh9qYP5BCybh/GeMfMZ\nWIyLvuuDeYZnwPQJ1HHPuKHZEvKepKg4I9lZCPOE0fAl1b6yzscql9cmaryF\n91yVwyfl4Z5pSz97iEWPuPZmkI9Fz6521yFTZ6OP1ATPtPRta/AVOPRHooOH\nHUA8jDXH6IFiyUkxvsrtCcQ/uO03C/U+PuEyjdnYPF6TvWTJCHCXJtMQROK/\nB0Dub4611pVuhL03u1zzcJQuvFD5xCUPZqWCzaaOtiB4FdXRMB7P4Nk0gVnB\nYVLNBq8B2OtOirdCp/ERmnfDrJod7N97gD0RKQl8UFkScnyrEv63OrYmsnuU\nE7N1MexoqXeucT04bxFELkkarRVIbla62ZTdP1/8XwD+NKO2yMMbpRWTAilu\nt24tXBBAFJSF0Imdkra6Qwt3ANOqpiDc75HAh6VZLGr/UYlJavfxT6dXiDKe\nnMdvp/o8lAD+LfB1Q6mZltVf0oNu694yifchM0hQZz2eFluyHYe3gGQs+oj0\n4Mhzm2DGs0MsICsurHW5AQ3QrZBBq+11lrHt/OdfAPMOBTFlUCBWyBnmn4tW\ngmX2ECZkp27T/n/nVXGw10rBfXcHKgTRp7e4hJQqKeSIy4buO2KEgsADnsUc\nvnTj\r\n=wOd8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDEd3Zns9FUtJUDJ85OnDH7mFnCHG0YFmvbkoCPqOZDbAiBGkklvQ0lfjOPtrDO2TW+qVG2DkUWrZrZ1YNNaudchxA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.93_1626813995596_0.2608190771986627"},"_hasShrinkwrap":false},"1.1.27":{"name":"@leanup/cli","version":"1.1.27","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.0","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://snyk.io/test/npm/@leanup/cli-lit-element/badge.svg)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of @leanup/form](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of @leanup/lib](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://snyk.io/test/npm/esbuild-loader/badge.svg)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://snyk.io/test/npm/postcss/badge.svg)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.27","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-eVTodklNY0yfi+ERPR7xxAJunGvi2srkvf471vHvZRHIQUwFpZYfk9Rc+p8RtBRxa/Rv9GxyqP14MCfwTEQvJQ==","shasum":"1ca77872bb0852888887d549a6719e9b14f1a509","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.27.tgz","fileCount":73,"unpackedSize":147244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+PO4CRA9TVsSAnZWagAArj0P/iz2Urf64OvmSW6Ur25A\nila1JbMY434Y/sgMJSa/QEOzUl+AfzKtzTUWQob7/bOtI51L1ldEII5LU++j\nlkDF/qCf3fF9FcUYNZ39cNI5S0svGYwCwFCaCekCiNIZ4qjhpSVtGmrnyLdM\nqNLwxNn34c7ojVkDCsrDaM3S3ZawR8D5yLWS/WodHesu9yJKRdRtTJbmqTZT\nkq3eHOHANIU3s5j7kOJNVEOyLd9stwyY0b9HX828+s8XGCwhmSUwfRAdwPHP\nWreRRBYs0kvzkuYn4u4SW1BGL5KvgKuKorbqPyv/jt779I8wpjJcgUc6tv11\n0IvZF9LAUH6ClWSKT8BjEOR7cEQ2XdQbyatrzuTJpKcZ+Y+ITDMz4KrpdtIP\nhf6IN/PdA27/oOGKgTxrMS21jWyCvRPAusWFREEG4I6Niwow6rdbuKtozH6/\nmPCa7jYhwa2tcVAJvICbliXRruZn2fVZ9LfUqY1iEQwMcYRA/aag8Phc2v2j\na2rQvm+JpOokjntml7vUUGEqe7BVjPP/ELEO4iOhwImZj8LlfV1kdTX7L7dK\nBx1WyQoRwEXOCizpZh+Dajv+PLrEUFI4BT1Yr/Y0Ab6wiWh3e5JVcym5AlqW\nARYUisiKBEMrws88F7WhSyO+Se8VqE+ChXX0ZQabK9Fyt57KJVhG/U/lMxMT\ndwFk\r\n=t6OV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1DicOFGmp1tn1dkne7IGYFxXP8b+U881dSSkxhik2fAIgMCyKQO1EM7GL14qHfOOTw9HEaj8UWIZ0YlI83t4tWBI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.27_1626928056259_0.6290872072226013"},"_hasShrinkwrap":false},"1.0.136":{"name":"@leanup/cli","version":"1.0.136","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.8","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.14.8","@babel/preset-typescript":"7.14.5","@leanup/cli-core-e2e":"1.0.136","@leanup/cli-core-format":"1.0.136","@leanup/cli-core-lint":"1.0.136","@leanup/cli-core-test":"1.0.136","autoprefixer":"10.3.1","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.5","postcss-loader":"4.3.0","prettier":"2.3.2","sass":"1.35.2","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.0","webpack":"4.46.0","webpack-cli":"4.7.2","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.2","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.136","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-+syO/GuoC8HLSQ4QIoLPe0ytSUGwRA28/s6eDNuZsAPZ0KBsKFXxCD7OcjRXwRJkXgHKGgRmxhPTSansfhtnEA==","shasum":"3de538b1826a4fe32df660dcea6fb6e738b0a1c9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.136.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+P7zCRA9TVsSAnZWagAA4g4QAIVYYUCzNdu4uIpjfHk/\nV3ZVNJilsVqhstqkXjVTsr/5Ep9i+YquYBxInJMGv8CRH3WoxnHaEWXZzzqp\nxmkZ5Jykf7gV1NDSzjAgB0iRcAR6mdMeJlf6maGMp1gB8BUSpKhJ60HCwh+T\nvraeQxHO7ce1SqOkYVO9eAk9zgrj3nc+xLZO0vEhaGlQUIugd92Wl9jmreMh\nAu6P81V+R2oJ+I82FX2zcTvEJOEukaBLGDwXkvBEtMKM9+A5i5ExtO20It7y\n+0Aj3SWRP2UgaEWavlGv0lLqO2rZhwluFT9bbrNlIWCH1wTd3HNbr6dHjbGN\n6tHNuM4Jl506KXmFaxgI9sZ0fsuLegpNVH4hJO8v52I+910ASa3jhSJuHlwn\nVoRL3/C158Un5iV5BocpDObOlLMzoIhCMW5Pf+WwNgbTskgeaYfozvhTpFlT\n1/T5IzVL/JFNThUN1LQg52+PvLg6byUVfVqzOZaTOmJW8nlGubzkQfZnA6rD\nfQpNRwhn6Ub1Ryd7ntDOSLDbN3pcr91vCax1TCh9SHzSqXpt/e1jSQ7MwRq9\nJdohS08MOVRmoxgkjUnT1oIWuXvw6SWd1czuCK4jrXZJgYXsy23EjKlTG5tP\n/2aUqa61e6wcx/loQeFCuJD2/CoMaBLVRATSuyJRUvnSq8bML1qhXK2ocLCe\n7E8/\r\n=t/88\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsuS2wBDbfDsIv05r9LOAY4nQPspe2C6rEmKMw/1h29wIhAOj4kXlRfMZr5E2n/B/WyFuu9spvVhPY3bjx/PIt70iG"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.136_1626930931562_0.3962117526754987"},"_hasShrinkwrap":false},"1.2.0-rc.94":{"name":"@leanup/cli","version":"1.2.0-rc.94","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"8.0.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.2","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.94","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-eU9R3v0kWKeJMmJLdkk3cRakgh+PoXvZQzR/jlA0Fnn9gtsBYBTvIQvrf5GX9dqkqIU9PExo6zcwe3UEV19qTw==","shasum":"47b941a7c81e40d74b6062e4107c5a2ae226b243","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.94.tgz","fileCount":73,"unpackedSize":148639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/fF4CRA9TVsSAnZWagAA+uwP/2I8P1yRcT29GCMoGpfW\nwwl5uevMEVxhCeL3cNtLfYodV/vBioEp0H4c4paTrpwjPReKZXiObNLmWT9I\nwyezVhu0t4SqsdiUKYDRc67M2op9mV4FxpdUKCfjJMZGo6OkF8N+iEcTPB0o\nZlajMT1SKWL/91fgBRh+MdHjRICJXz1z9ZXy2cdYeAwZdRcQU81Yf5XN047E\nztPtrpxLM3Bq/r3p/WH+30Ac42B4VHqti5iEo4PUD2vazcqAWs/mZi2blr44\nDmAkUNKVp5W6UNMbUFbDNTIJvWna4RDEHxuLs365wpVCx79o6bTxixr1Wryt\nGi4y79wgbrsAq7yRwxNR9IU4j6xQ3+Oiyfy/dJoEzDwTv2hbSPypIvkyoofp\nlnqcacAgx6YDvZkBVQ/dif4uPA7Jf/HP7mcNX/BUIiBewPsXTERa6GxWZk8m\nnG91xRzdnndkklz5FlSHsHqxPsgP0J/VLZBUrUZeTYlLQe4TASpe9RphQCSZ\n7wCK7vLnpRw9kdH3k8HU2orM/nL+sQ6R8COAkNundWmcDRtOKSsKLe440ouI\nrSZ7U9JYltC/1GXlqAB7sMjPrzhJZNjSF30i8ibDmXqZXhnBQV3MW1MoxUnC\nPWfeiJdMnCaYafZ2Dn2pgANA+qNqYgv47yK6UhqEhIY8weceuiZf8BGceyA5\nBg5t\r\n=kkMs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHGkW2SfiWYFdzGVgWqc7OxtNfoF23IZPXwzlVEKohyGAiEA3avHrX/XOJRAVkwic7Ct2oT7gvhVLe87bJuZigG61iY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.94_1627255160728_0.782766147748208"},"_hasShrinkwrap":false},"1.2.0-rc.95":{"name":"@leanup/cli","version":"1.2.0-rc.95","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"8.0.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.2","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.95","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-ltL/l7hwnR2PfThPlIY8cbFYprlo/KucuB3vlc+gbORoIFAJizby/0sMULhr7t/g5UsGYCqWuTkHyoyNKVH2Mg==","shasum":"0ec28f66d429584c58873f75fd2c787b1b93ac1e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.95.tgz","fileCount":74,"unpackedSize":148698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/fRyCRA9TVsSAnZWagAA83YP/1HqjnT8v2SkzvVHtpUG\nUt68izbfEWFVG1pSUL5cM9Lxlzd21ynEXIwi0xEr+zE8URlpE/j+MbzGCklz\nD8LQhwipG1RSM0YZrFc5toTn12aPa0G3gl9r0aBiY6bMXbjHCKh3ObTvu/Lq\nWDgFXP5xCgz/wtn6kslzDN+dtB8PACaPA2xo3+CphgM6ORGqsyCZXePq80lL\n+Ix3neEQEQDn6tudWpO5F58qoowBRPnW7Wn1nKXV+2Ipx5y0RCmsqt02o47r\n03/txk/Sond0+YwBJ87LZE8D0AHrjKvP0GA5PYMtlXZqTr6OAXVywkRgnffD\nlnPPwrFm1FNavUr1gj52WOq7D43zzOO4tu5W6MQTsylr+5P8ozAvY/vzgNNm\nQ9NKOhgHLtZGrRiuxvm13MdnxBn10dpZx0EREl46GkBBc944jfbElAUM4BXo\nsE35ad8Wk3HyaXXukbjtZTWY+ytuW8Nu+mWpKo37gX/C9hG+IKsVW2q/YZXn\n/RLETHl0lpHFRoy0UWcI88L2TU3cwWJH0Nvfuo0Nz6yWmz3KqbD4uFo0Pujo\nQieLKFar7qBiaehX1xpuB0SkFHHBYpgbP9XpABpDCUy6DniZ9bxsae+rdgB3\nOdgwhbb7DcSXXW0omd396jXjz07EyDInkLq1k/Q1pAV99eKd2lHUrpJUWs5f\nleUS\r\n=vbWY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZf8hczZYf4GHUDx0IpOTGudQOjYeCdUhqechVYUJ29AiEAyQZtbl0HEd29VlGXVVD5+cColE/wpKNqrEgqueqnKNs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.95_1627255922251_0.724518340022569"},"_hasShrinkwrap":false,"deprecated":"The version 1.2.0-rc.95 of the package @leanup/cli is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version."},"1.2.0-rc.96":{"name":"@leanup/cli","version":"1.2.0-rc.96","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"8.0.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.2","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.96","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-ULP4i4EAl2fWqV8l+q1MW2V9XBg7eiq+cKDsSxlJhqF5hZhH4fBfxHDOFNY+Oe/1jMfqM4Rw6rlwI26Zc1/7pQ==","shasum":"0aced2faaacf9bb4d39c859b3a0507258a48ff80","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.96.tgz","fileCount":71,"unpackedSize":148573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/f7MCRA9TVsSAnZWagAAL6gQAIElVYPsPp7ZoZGlfKnC\nt//2EcxP3q8Je7w3xkA/c1KBHEsbs8DALdDtcx6JzivXWZQzDOXMTV67UCMi\nAfVx/zWzFR70VNOTJRuuqwmxdRe1tzBJdw+zaQ24AaLM/AmoKx1sVpnrR89A\nGwOL0+0i2jq/aCewULM0FaY7jC+PJR8a6n9eNDj1zOciqaCuEbNYMUB3VRim\nPSBLRfd5HNqOfW8K5cOtXurolm9rnKBPSEQSnCVCg6n0H0k+QBxCySYkhZa8\nPT+q4u2ywGUsElDzasP1z6hRQ1gGiT6CTAVhROUT99pcGL1WQuXbwvDjkHn/\ntRfNFBXjpL3thQpkdRr09VTsprCPSkd/eirVl59Q6bV+VabJp6fNoYnxaOuc\nui4aaTc0Urz1SsPOmFS+5CF0O+CLfuosW9c5zWlX87mu+PuKNZ2V+SG9wuuI\nvbC+0eh7jxhtvG9kMUQMw3uphh7wOK2WxZXFoCs8H2F6qXSaGNbM+juE0V70\na8c+fDdfwmjCWE2VkdU+kmOUAWBlG1J7j3TuUuNMQVeglW0YWHM5jSfWzkxh\naAp0D5kmPp19/GoLJDOI8mNSdG8oWoRXGhGMwCDaUmptjxCPB9LaDu8G1DrD\nA7qwaj7qCL7c+KRP1d/l2oPjHTihIpMCMTWiHwdNIlxMyFGELWwYMvTm2U6P\n0G38\r\n=wYMC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0w1etu8On5gqfmHRGAubK6iXBSpAdsY4ICWcrR4gZZwIgGFjpzm1Aj5ykjo9f6CbQ3g5DrrrlijmTVoZ+TSViRT8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.96_1627258572512_0.15401880998671813"},"_hasShrinkwrap":false},"1.0.137":{"name":"@leanup/cli","version":"1.0.137","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.8","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.14.8","@babel/preset-typescript":"7.14.5","@leanup/cli-core-e2e":"1.0.137","@leanup/cli-core-format":"1.0.137","@leanup/cli-core-lint":"1.0.137","@leanup/cli-core-test":"1.0.137","autoprefixer":"10.3.1","babel-loader":"8.2.2","chalk":"4.1.1","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.6","postcss-loader":"4.3.0","prettier":"2.3.2","sass":"1.36.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.0","webpack":"4.46.0","webpack-cli":"4.7.2","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.3","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.137","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-nuBrt+eHpIWei/cT9Um8I6H3Y9yXryQZJNIRmpCk9GxtceIJgVkcJVoW7Z7ne6Qc/t8y2dEi2r62gLMf3G/SOA==","shasum":"005747837f932832f4d6b94418f86f10c765eb93","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.137.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAVY8CRA9TVsSAnZWagAAOT4P/17Vc8QZqgOi2Vez46dJ\nXi3Izw+P2t4qvzhr/E2y+IkufDnx6fYDAeYi3r/vs1GuqwBLFF1To/BiJv14\nenmuCCLXz7ltbN3mICTnOhvzBu7g5F6lUZ+9msY43GWeTvT4HQWaj9lJJWji\naAfKjITgjc/olT+7lxtsclA+Gsicew99ScYgO7rWmXH9tmy/GdpQzps3Vfc1\nZtAeRYa+QgGOYG0tu2IIaU7K8rg9/jlN6qVKaRl8PTNRVQQz4uqQJHtIhWOb\nl7dbEwh2EjEgf0lZmGY/a+um4hvV+ysFEkoEsRYowmbbecRR34k1IgnLnOO8\naH9TsUlT8SSZGk7zzFpU/tbdQVH46rqKbJnWeXJzP8T1A5qjVDbRTRjnSNc7\n1ApR68tD0t2B56d8zCJvuMxW19IV3NOVSKaowqT5hVnVNRes72rWtr67T/US\nzRjRVvA4k8/QIaNFV1qIqNTfshO7bm0ZTR+HNm/bTRkEiatvGY8kF4QxjUqO\nE98BNO86PKjhLlzpuVPViU4uRw+JO193HaUKwuP3dRcGTQQvT91sRbWbEmBz\nwyOZO1BRkQ32t0tDJjE3Ftk596YElul/K6y+Ynv8cCckKK/U38u3nvKlS1KB\nu8UFHAmSWO5QYTeLmR7Hw/WJJIG6DPkSFF2CD0azM08lUjsF1Es/Tu1NxXL9\n2Ozq\r\n=gQhz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC07GCn72qa/kCLP4SvrAx0lN/K3t5Dk7YiM49wNRxplQIgAn2q/ccPw9t5bxYG3YNljgidVg1Q+zRTZ9obzb3YtOE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.137_1627477564069_0.7570072116657929"},"_hasShrinkwrap":false},"1.1.28":{"name":"@leanup/cli","version":"1.1.28","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.4","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.28","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-HBrerIK9VksaJJgiU55Z8YQefMKVYd5l0a2ysB5mLZMHtQ05RGfb0L6j7IAY8GvbhjXE1lVZQNdh8fZnwZanGA==","shasum":"5e737ea29b7608897450890d3405bccfca2e9a3c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.28.tgz","fileCount":73,"unpackedSize":147244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAVZKCRA9TVsSAnZWagAAeskP/17JTzTnVc6zIagQTcOn\nsc9SaFMrtdzeMn9Db8p+gqOVML1kKkEy5A/RvA2a1EvNfYMAD8M33/+uo30N\n8a1tOUehcdAQOIRLHFS3scO6kTJfz2fAxTy7YM7DABMwg3dunG5Rie7twH+w\nyVvAN3IcnH4hOgwcCwtbNlAwSB7WHr+n+YUF1MxVFP03uIQsgnepihDD/Dut\nXtD1zznVo92bOu4TBJjcQZvPJoHknoK7LKs4jjY8L73PGxdX94uEjjTgZeA1\nW8/pruo3JdV79HmdeMeITjKq3zuOaqX0Sc1IGI1NF4PV+mx80wXXNoMWywhs\nyqFoF2G8VrKPvmZOuXBlmk3Ceo+9atrE2PmfQTLiRdMDSWOWBCrKTQ6KNnjr\nUkhNdMtxQVMyYPqkfciA7X1eN3gkfv6SnCVt9ArSjBR41xxdX85xs9/Ak3bl\nVMJLdH6fbvajHHjchStNLSKsMGCPD46AHsOeUqMaBsH4faQ0KlddIoJ2zHU5\n0fneqgP7GbumBiab+fJZdylbbkuVPVJpJumYnvq8wImSUxTbJKM+nERyrUcS\n1a6MCx/tT5+TKkgSIPgJTjkI7iM2Heal2NjE4lqMtLbrcjZjZe8ZrWOlVUSm\nILSlFAQQYayCbvROYC7YlwbQJAunMGDUT1impUfvy8Ohb0KpbR8t1rdmxguN\nj6Ig\r\n=TZJ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD027QJQrwCFZJZYdjJsqPu9BMBSZs1IJluzyO7r195+AIgYYN1DQe9X8YJEB5rpVNgCwah8hpLcoZvHUUnsnvC1Lc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.28_1627477578244_0.815109461921641"},"_hasShrinkwrap":false},"1.2.0-rc.97":{"name":"@leanup/cli","version":"1.2.0-rc.97","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.1","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.5","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.97","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-N9T3BT3F+qZTG9lBpeh05rGTudzjRZ+oy7uQypOSEkpSde2ZC3VAbIN9nS71FSFuSL7dWdr4cbrZz8j3M1mS4Q==","shasum":"1bef43c4a2f85a84822be8b2cb924215c730ea78","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.97.tgz","fileCount":71,"unpackedSize":148573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAbs7CRA9TVsSAnZWagAAzIUP/Ra+1/oQJ3/ofJRuSELv\nDTV4X49VLE1LpVqqLgKG9o4LyNTzyHk/XXsy+yQjMw1es333d0HpP/Ck/G++\nPV0dDLB2IIwFQh3xykEkIG4vkGlfcBqIZLrcumYv7EV2BYPgg7kz2ml53G8o\nmUUCYjb5XU4V0pov+P5Wgav6rjaC1bH6+RUts5/yqI+et4gZc4DDNtIuXEp2\naclI6YtfADFkXzkVnogvPp8CgMCGTrkQQjtMTkKlNNNT9WgQNKc+z0Mb+iqz\nZl1n6eQw/nPRbN7vsceIKDhXj6Lmw4045bEsLdHmlQ0qgxoPLoJO4UlY2MtY\n4r+rGjOx9te5aa4qCeYCgh5II9GpB/GAsyEz1vJ7chZkOV1FP5Zg2jkz5KNC\n+mywJglcd2whRzQKK/fz3HBQy4WTpdka0o/vwIZCi1uHw01XTR9g4kQtEoif\n9QQ0hmiU0MSJCZ9UjgwgSvgQqoaEMa37ypYFVgINHeoIVjlh8yE7edr9uB0M\nNWlJIY+1gGkWagbGkF+h/xOTv1kwfk03jgvy0+0S59NYiDRy57h2YVrEVqxo\nt1SpiNcM4LpExz61+60IJTfX8cANfzhCpe/vEtTDlj81lV+QcmttUDIN3tI/\nb00D3qIxOVhrPVkaAfwPBFb2xo9I34IVVr6dsbLs3xAAjzWFnirqY/bgQ5E+\nne2c\r\n=XtDi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICDDomGPbWdYOjqERUmwtL5GKdx7q3Qeg+qMSuTzIMMzAiB0QYkv3QUaVbACwPegmPbHhWqKX9IcVF3mVggZKV1+TA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.97_1627503419549_0.8710038741187593"},"_hasShrinkwrap":false},"1.1.29":{"name":"@leanup/cli","version":"1.1.29","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.10","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.29","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-Emho9Y/dPHpiRBfTe/e74gkuyUW/mgIauOmhv4ItSNvmuTPkWTwzX+zmoFYm0dmM1opHpOE3QAeG5v7yBGNvcA==","shasum":"86609b42cdd37b25be3a90f6381433600a4d40e8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.29.tgz","fileCount":73,"unpackedSize":147245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC4GtCRA9TVsSAnZWagAAI9gQAKN+P1EgSqSjY+87GwAf\ni6cTTB/DYIb5hJVBb5MoKJHDlIDkUmNsL1lZUGgumKvcCBSZw+ff/fvGwcjH\nd6BFJGETsyYRDqeb1++gT3M95JW5rQYqyJphJXi7pfWCDPFdZTsKg/qaIHS6\nxutl9x18pvOMMtil8+IJ4Gf9lGIY02XL8e3HAgQ5J4aatlIYJoV21zm0vqZk\ntyw4tgYRgNF5d+Ml6Bdu5YPEDlogkro3XzLzjRRIjyRN5TK2Qr9IhJveuNB6\nzQg7IlBoKJy/vNmMEktGK/lb7WMsWdErndLofIqjVoCPWz9x94HeBAHd2/w+\nu1/QniCfYyCUdhByoRlSzZNcm/JHqz922pVBES57m/3syB95pN4h0dGK2Y1D\nMgOFfOVefhqtlmTKJaERb0Yz/af/R3yb+f+uXyOZusnBPTdXJ+n3XwlwASZM\ntcU/lzaH8aqA+f7B5imJ/bwxCaVMRVjvbM0agsORe4AYjlv5Jjvp3s+RedS1\n7GEyzQYdlYb9PW8afLmKG9qLEvlSBCrL/BrSyP2D2cdaxjgbriUwIlN1IDQA\nha5kk6RDpGLhRSPwiSX98bX+teXdDnbeQuqNW48ctgOH87/JWPo0eloxKKUl\n0D9OysA1RCWxm9+mhasViwfTy7rt0rB5nSqs+SsChCmx2g0tEqCO6zMayyNk\nguk3\r\n=BveY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCycXAHLjSe2ZjOiR92RDLUVw2eC7rtGTAUbNvuOHmfMgIgYZnr5J70lwyfiscnUmeDEkNIpiBEUk+QS3MygebdYW0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.29_1628144045657_0.18975476232428012"},"_hasShrinkwrap":false},"1.0.138":{"name":"@leanup/cli","version":"1.0.138","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.14.8","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.14.9","@babel/preset-typescript":"7.14.5","@leanup/cli-core-e2e":"1.0.138","@leanup/cli-core-format":"1.0.138","@leanup/cli-core-lint":"1.0.138","@leanup/cli-core-test":"1.0.138","autoprefixer":"10.3.1","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.6","postcss-loader":"4.3.0","prettier":"2.3.2","sass":"1.37.5","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.0","webpack":"4.46.0","webpack-cli":"4.7.2","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.5","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.138","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-zPHQ8srmPAm/iF6NUOSc7fHysuF3p5XnPtJJyDIUjDr6OSAVMx+QqAdKyOuZTAWcQ/U9uDi66kr/rb9SLnV4YA==","shasum":"1cdbc5570e0be5df7875cbeddf0f488be4c4ef70","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.138.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC4IGCRA9TVsSAnZWagAAz9IP/iP/0UFI8xD4rtex/bBs\nD/Hmy7wuUXD5adcG1usL4H4cxOL7Ee8U19V8fqugc528YOQ7JbrhMOeaV7eH\nFHEi1NxoaZbnUm8oHtpy0U/9Q8M7K++Y36Qk/kXtJFbq3n3zurb1rQWP+nMu\nP2Ymk3bSuezemumurgzklXeUREOnQhX2LWrrlFWUk8mO+6bdgtfnbEfHFt4h\n6DQ2Oz1muuc0Om5bv6EKMwoZJZfNQNuoKarHdGz9jFvg3Hmvr2YjLyBeJzPl\nozHLujO4PpQ3yAR3V10PARsSv44+59aTyj36BixNc89VqsdePsmgJ9ihTVoE\nG6DK6mDe4ibJoUBi4zI//CZme04lRDaz8ONGcdZC7FyyBelFew5qgaA3QNFv\nuiO+4KU9HGTZN2YIG3DdIPUVBBfoYfB1/6ENlFM/PLJccSAJOTobA2ymAOFq\nmFUYzeKI1UjpPqKJXN91o4w1UsHpVXn1ou36ZMhmKc11l+fdImX9ZHxJntRe\nYtTLFkAUtdCsO8rP6iviKfgv33/sZzncS811DyVDnR76K8REh1zp8D532eqG\n+OPjwFpEEBLsgzfU8SDJEh/tBP/7Bmyq+WBt78HMptwXEcE8FTvAG0GDk8d7\nrQHjnEiO62q5fjMtEDIslWt2/DB0Cv37a7RD7AXBmEGzcalpC0pHEIt14/QZ\n6ITR\r\n=DunK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC0Loii1Vg6vTVqeBcz5/ATxShqNP9phybywFjXXyh/5AiEAjYVNKKuTPY2zoMCeXasCHgANGQTrdf6O2ru1xVDsSk8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.138_1628144134541_0.6290661154886252"},"_hasShrinkwrap":false},"1.2.0-rc.98":{"name":"@leanup/cli","version":"1.2.0-rc.98","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.10","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.98","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-ggJrQ/QVLcuCw+IF5scumV/J9bUrVGsFGQjwcKDqYNQg0mfhi0dXQKltWDmBgRAHtWjN3P7iNJY+dOa+xlhgrA==","shasum":"15cd3e278d14019300d6b6dd597bea878d0524e6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.98.tgz","fileCount":71,"unpackedSize":148574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC4JdCRA9TVsSAnZWagAA9SEP/0gJbKRCpm9cbRkC1mYE\nVMtooDctI61ZUKuUAJOqcJV2ALdLWN6HHjm021pnFR06oGRxy/afvxXMmWQj\nvDivbpZ9twKolmgs7P7DQYaGwEABfac/k/3WF9vRTjyJTCdgo8Il2s66/1Pc\nTmkaO9HlXtp/nf/gRUYqyt3u0B+5WfMVJ0ejkxZhSXM8b7MNWzilBRVw3+D1\nQGJ2hd4HXZIfV+riN/0X9CV5Xga0l6YPpbKTtUr1QLcDlbIzK9l24LTlRbSD\ntfQ6ISD7hkImOhkbPlx3OlsyWvDa7dtHTgkHLFSiUdphl7k/4ZvFCLPgi7YV\nOMsklenks1DT80VZT3jEefbiDxdDkj0giLdDyMCc9ULsxbeVzv/FYkDYL9nS\n60WkR30kc08D1VIdD9mABbL6qfgDY66bUmjExk4qddICtsrajd2BzdeyyIdg\nWW9A3fbOS0NUkFtmFSUm9cL+GHC5lYDUxPl61S84J1UNqrf0B4T/P1Dyj2Lr\ngcrn98//Nk/GriqWlDFhgSOQnlHnmyG+ajC6e1Qft10/XcYCZ7xqZtBynIit\necsigMcnbbAgpEStqjCpEj84RT6WH/DjAD94NidN4E51J/1gbTNj8b5Ifhpp\nZjDRtFNQ2BGTCQTGg64NkxRBL2LuMrbKM36iXZ4FvEhZQ4CjEiYE1HcsOpMm\nJEVv\r\n=kUdi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEYBnqKFc/t/JSvM+yUJkf+CIhmnWPYiUX6ex0DwKLPLAiEAncUs1ZJ8/BFrLCPQJV7v55Sf08qA1kRl2B2xXuuWW/I="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.98_1628144221747_0.7966843371562133"},"_hasShrinkwrap":false},"1.2.0-rc.99":{"name":"@leanup/cli","version":"1.2.0-rc.99","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.12","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.99","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-Vu3nNHEwnNAYgePiBbkKKWQgPNvBPIhO7257r7z+1SqQnI7iBkTgNAM7PTyFYWoWpaCHt2ZW4hSQ24zq2Hmasg==","shasum":"2b9a7e6fe781db43d5f3ede67f4e425ce4410011","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.99.tgz","fileCount":71,"unpackedSize":148171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDIhMCRA9TVsSAnZWagAAqzQQAJqidG7zYBr72OMl6Puo\ncrfoiYPybCnB9QGqfkiwOkaG9RLC4jo2c7Rv0yWM+ZfWOkFYnDr6Tf6A1azc\n/ix4W6Gq66THMsMl0EYDWPFAB4piJw009gH79q5YP6ifNcWvWkwORsXss9ki\nirmJD6xPZRTfcMvnkvGRTJ5o/9cB1eZ7A9IPPj67OWwCEpNRqPLcLzFRaHDv\nHVj7s7uTQAmNndTveW4lbgnqkfinyVwOCy2S/cscHsUqWt3kcMVKDSkdqPSW\n39lnOG/kLXt4Z5lIxkP5KM628aAzsiRF+C/jEMZMfH0cEwaCr31QrnZB/1aC\nnT3Y9SX+AG38AuSeHVpVfsTYKeL/N6/BKHZX2Wo47QfkxuRkAOjZISwlGtoR\nLu2DNHRfFclFdW0RDugeKFGzrFLPGqNl8VRirOYXkaccQs9jNRySFXWs57ls\n5HZiQJHyLXR6bVaMqa6KPXiCjBqlgnO3jEavs//U77pxlF+IqlO81/5uBaNd\n7o0MbbXy2P4oOdgGwuJ0rxTgShixy14IQx3DFWs1/dbeP3GPbc5ixLpY6vwH\ncZNahpKXgBvcC2Nlg9SBdH+stFzOFeudcQsvzrWkEMoE/zsnOmywD5cOTxTs\n7g8hx0/4439EkQBc7ELJTva6+zngnx45KqKCYTVn0WvrmldAsNGjn9zGuji9\nmEjM\r\n=r87w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFf8iSxWVsc5Y8m9SIhRx75VNKME031fSjp4kC9amz4CAiA84HkGiKCFLmmQvnaYxuX6XryRl8PdILezf9Enf8WVHg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.99_1628211276036_0.7973406705105037"},"_hasShrinkwrap":false},"1.2.0-rc.101":{"name":"@leanup/cli","version":"1.2.0-rc.101","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.13","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.101","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-WWT2EnJy5sl00/VvnHTFHyu2nDoCZhSM/98x8s9hfVgIXcdRxboFnvxuM5cxeta9sZ1cqtlOUQENAefJrt459Q==","shasum":"4780c7e0ed521ce23987a06b090032a807ec829f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.101.tgz","fileCount":71,"unpackedSize":148292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDLQACRA9TVsSAnZWagAAZCYP/071rQbGNV9R35S0IhIB\n/2aCusoAjiTX5/4yPhyR/wfFLYLqnuqqeM0PglojkhrPYYzq9QE0tZ9wJaft\n80xiDR5sZceUh/uMEKMLAquADdNgB/6rWAB5dmHQADKGZ1tqd1Mix2vtGEjj\ngtoANY2PxIkZvL8t9UQc0wEYOdWJEDtIXDO64wo1HeXbCD9jGDMkLK9JKCO3\n2CJzpl5yXWhit4VV925ZIuZrdOrijZlX5M1J3ibEyRo03xVodJWoYGWGJYKZ\nZWEyDu4DFQwZqtrkURqV7rEP5eft7Qhx0aSAZz0UM6m23WBX6kSUERqfz+Tb\n4Hj04qGjI4CNQfkH7XiERPqZn4QzLlA/qxSj5TqR28H8w37/mcWlUuDfG7TF\n7nGEAQehLKgnZtAmOBtJyVX18W0F9roVzPH2GXeML0/clXk5KzcUUBjvds//\n6PTXP82VYWHEKWO8THO5VLnXyWmKihb9d73M4z/fV0EM0OYVq8Vj160nJiGK\nLh4QzrEsfQXziBTd7Xgc5TxyTqNXSkdNFn+sxXIZJKpw8uX9mXLms2liJefs\nvJwGi+FLRrsE/9GO4cHMSoOLraFMYHZ1wUKD9CwecxnXsd2+U4n6jA4iHGrq\n+CcoEt/Y0Ym66O41bi0PwweYlQPq2D891WMUN6XRjc36B5brGDg5j9nT2VYY\ne15H\r\n=miPd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCg9q5XrdrDflnCbxeDIG+1BPPtyau2b225xjpcE/lGCAIhANSY4BnCQPDgdP9b+qs/DZaSE0aTFyAp5Q2yF1e0R9OF"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.101_1628222464034_0.3460572018421526"},"_hasShrinkwrap":false},"1.2.0-rc.103":{"name":"@leanup/cli","version":"1.2.0-rc.103","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.13","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.103","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-Q+pIBKO/+OkI3nqmh3sDNSw5dlwk8ksVXo5tIEfZ+7hfuLWch5Zz3JsDUXLOMLJsIdQXybK0TaURsaWBWFLkmA==","shasum":"daa9bf9a38d7783ff644976b06ed7e00d504f60a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.103.tgz","fileCount":71,"unpackedSize":148293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEOZBCRA9TVsSAnZWagAAnfsP/2t5OjCv1e5XN5LVblIM\nNn9BiP9GTrvqB2x8Fs+sQdXaC/ir6L8DHJ2KtqMm6nVKwPmThiUvAHX3fo69\nf0hQravd6CtA/8VDLawHGfBthsRspv2EVACzkAXB1NYvWpnQnZ4TP/AI145N\ny184bu7SlFezo1xkP7tjL1Dsh5jG7+4cIAljiWUUsPWxR666W3AlcjNJOSKp\noUMj/mHI55pHUrNi8210havb7/A7QFhIK86cs48HaoSePkYUM1r1zFK+oBar\nt10RIke/rX2XCV4DAvfcSSBmiUk05VYAAd+z4jKY27Jsy4+uozNs5TA4SLEc\nV0IwFtwu0ZiVG+szmhkjF3rk/xOh71UaqFZYAvk10n6CWnu6He6qigrSwtg2\nsQB9XJXzbgDIs3Z0ggbC4lOKAMXJPynlQi9OERalw08UFg7NtNl9q0nCpVRN\n8gN4ReuIwMy76ubZEakoXFoPRp/3ItYK3TXIQNotL6NgfY98/r4+ZjlK7ArG\njwDuRVgU86TdmO3xG4z+h/10dvYmn6DrDfoqkzQz+3r3qfTJmcRqwy73x79h\nrH/PD4Q9IJRC4eAOjmMkVoOGFIs/3vyX0V4UMMXGkUUsrgb9u8lrN9ir4za6\nuGylNv3oxdW3r5dTt2mRTU+C6fhiDqIEFE7sn3MQU6q3KsjN65rEag6n20MO\nEy4T\r\n=/q0K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqH5tK80U9cqDjm+HEtsUA7kl+aUH+PUPdAWB0NcgNjQIgcxnRTAPxUYFf9TdjcytTHvjQwELzvLdlUzfbiWmL2+8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.103_1628497473393_0.8845705699148114"},"_hasShrinkwrap":false},"1.2.0-rc.104":{"name":"@leanup/cli","version":"1.2.0-rc.104","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.13","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.104","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-UOLjlF5auSV/Q5xsfTBb7hDWzS23GWKlCv5fmvQEMdDdJP89YOSChOkBBoPfFSmXqer1eu4Pnrj3yd/UD+/z6w==","shasum":"09443b9eb22ef6b3bb1ed172d5b476b17e32bd00","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.104.tgz","fileCount":71,"unpackedSize":148293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEzhiCRA9TVsSAnZWagAAvzgQAILy9q4wEUo/r+HqYz/0\n3uZJ8AJkRVMAWA7NMn0cMlr7EH3LQbieCYg9D3oUcrVtSHEhgX+FLCUXfOFO\nhs8Y7b8mSAS19lA5pIr1rD/om4ye31IzzRnR1Q0m6NYsT1RbuLuPLWkOqPjR\nJKtFSNHKTd+UhN6OTQQdTzLVud51js1vAGZnVjzvDpIb55RG1VIBpVyIJE7C\nIywgs8FD+S74rkr+73lQ7xUF+41uBihZ4xp+ftlalGI/HPwk5gvA1RAaoV0e\npTik04rfNs+T2mF2mpNp4KE9f3xZ2B9HUWOF0x8SM6e1AIRp+meR2RwvZ8l7\nMbYtHXoeKlnr8wRrEvIjSzWGIOj1JyRMavYqNNEEU/uO9gehKrCW57ZgnmH2\nYD60CuMTTI6HrLgEEDcspj0j4/9fEVBwNtMjgZY+wHvE+n4BgC0I9TP2Z7BY\nhI/T1ZdEE8WgpUZhUhMJe9EGPeoYaC8UnPJEIHRiMw8fjHMJhNcVqjMEgFWl\noV8KON9cfOiDvx+Nd//JpbAji+IqxRsQPNpLqFdGToMH7tjabwOszoGFlact\nJfZp7is4kZV4zUnsyZEXlLnvy8H6+ahisSHqEt4lswBDkR3GB0Ng7/MhvQI8\ntvOM7Z1xBOJo8nSgH+hXikLYVvustXPvB8IAGS1eCvJqCBPWT4/f+r0dV8fW\nud9+\r\n=p6s1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKsy21Erdpy+dY1UrshTVBGH46CIv5TfZnDjQb/AwcXwIhAPA9C/xB14zDPuwQQ26lElbbPdlqdmNuFpHQzUvWy5+Z"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.104_1628649570276_0.8967683617148021"},"_hasShrinkwrap":false},"1.2.0-rc.106":{"name":"@leanup/cli","version":"1.2.0-rc.106","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.13","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.106","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-Sp8PCiW2diDEq1sZN/UJlhw7oyedxEHRAu8kqcbJXTCGr8EfYdT093tP2l+t8poykwED6M1kfAGFEhygb/MndQ==","shasum":"70db610f4d85606fd14dcc5743a872f792f3f93d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.106.tgz","fileCount":71,"unpackedSize":148293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhE0krCRA9TVsSAnZWagAAlawP+QCN4EQNEl3XCmCQkxE4\nT/qfwdhMiObJ5fetBnskv/6kEI3i+j0rwUpwd/F46RHx9217y5echVEb0EpJ\n+KrkQbE6M0TA/cvYl5fSktygHv/yW7H47Kj200XRED2dHjItK/bHFjANFcqf\nOAlu3DbNPTvgLvMIz3cVucqXUZtCuVYNAnNjZxBUUUNv7QKRbOVj67OM+lZg\nWof3o/idIm1tTTZVdCG8U4mGFOXIzjj20V/d2FqHB9GxTTHGYc7cUKN4iimV\n8V2aJSEGgvdVR1Tzie7VKYrxFkxsSLlQj7DWLGz5vgGnfL5lD5cuk+J69yn0\njs44BmCXmZ6ifgjmdRQ7X48hIFvhwcvoHntJGJS9GLdQ4E2KHEf2+AP/xEko\nwWLyWiQ7dTDdmmjWs57WZx6ukAH6IF8HLT+IsmXQgEe4NUoGjpbhBncVg9td\n0WpBacGYUMIls5fBm7LxhjMEozfCnn2pIyaCwnmqodRPoHhjnDZL3IFP0uTu\nc2I8QOcabHT71dMrLa3ASGRX4FDQMPXCeqkb0983PoOWlMLHW9AWGgs9BxyL\nJCJ+cGuRBpbNpIc13OLxdzMZHYaOJfClfwlk8O5CagjKoUco0UMD1JqqXQ5u\nb4pOaV1TRIQzTBKoc9J8X908UxoyN01M3BIacxFDXN2QxpYMBYWZpiMb51GP\nQQW1\r\n=iKqW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDn4KVP2alRSH25BbQ7eJnUlhJMHoK48OA/v0//o/F8VAiEAw7pfnfL8iwXZ8QqWIyS9TCxSc1U8jzbwYmyBY1U2nCU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.106_1628653867680_0.7219644224943709"},"_hasShrinkwrap":false},"1.2.0-rc.107":{"name":"@leanup/cli","version":"1.2.0-rc.107","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.6.0","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.107","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-edHRkYVVXsclYPzJVrtmpt3VNW4210nJup1Ie1VF/N1YAmv+QG4ddus2MIY6fMLxyYjMsjYrLNKZOdOy5Uot2A==","shasum":"2a5b7de1bd31480671c65381469d579d8dd6bbf8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.107.tgz","fileCount":73,"unpackedSize":148782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFKMYCRA9TVsSAnZWagAAoZMP/1R8g5+PvMhLc8f33uhd\n/gMeeiz3pxPI8f75RsoJ50xBXrGNWxZueFlBLv2riXUV7gBO+GPWxUQ1HnUs\nNr9LtpbH6bS9JHt/EUCWbFA9be3kl/PS7J1JgadQEFJE1RaWTCgQG0PZWlON\njP7AfcSCOFC+KawSSTqxjjoN1W0yTuyjmwY6QLcuosNE8fODiCwcTji2DKZ1\nv2F1Qg1mrADaDk2XvaRAEc3CB/NMos4Clh5DTGrYkpETSEnLVmoywoKdr5D+\n+LpxQChIeDOOnJIdaWXuhUN+8CzTT1tUIj1O7gZkmqxhWHZyLuUKZVUuV3L6\nkJFEVx9OzmiFU+Ff4T2UkW8qIO9r8oSVnLIcoFrbedSngHePLHdQd4whKjPM\nie4FbtkJjjn9lupJXPnx+tz+bNvF/mIo2ezsh98elPr7R/tapXbe1h7N8ecI\nnPoJnGSwe9fqxA338QyHFqQ7U/cAXuIT5SaY55eByxCnSFeeTuXnA0dJpHyN\nc1xJAWIWreTf8wH/AeC8vDzP7zanqjRaj8J/QDd3IHKknOPknqEsh+ih+DCZ\nJTlgLza9BFCFtZdNCKvNdHVuz4cl9r3io4vEbkUhba1tYHcw5h8zBQYrpKkB\nO2BX3pJuR+BBDV8QhhQFso3WCYbA1La+zTmT6fVVdZG3KpSMIzhJxqpVOwDG\n88nK\r\n=GbEr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDN6Ch86+onav/+ldFqUfIn3GFut4ZV8QzePCewByLURQIgKMtoej4zMn6a+FtGIa9lhSFxWHGwXQ+/7nsI9CJ6oqM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.107_1628742424534_0.5746919828469619"},"_hasShrinkwrap":false},"1.2.0-rc.108":{"name":"@leanup/cli","version":"1.2.0-rc.108","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.6.1","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.108","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-gXX1gHHlf6lyXDnHp7Uf+ZG4OlEm3RdVsqj+OnimaRXqZ8Bk+KkzX3GjgJdLqothrIso1lef3iI6dOM5Tsub/w==","shasum":"1aa0348d7c8aa0beb39b7c5226c3f1360710f390","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.108.tgz","fileCount":72,"unpackedSize":148538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFdpxCRA9TVsSAnZWagAArpoP/3trgTqWinM5cfou979I\n/X+hyD/d/O5hSdKURiRYu2KipvN+JWK9aL7UkmVo7wK3smzywQgcaPlt6ZyO\nwqi5x46pZG9HXijEnjJvqEO6OBKbeuUL6wb1/7PFXqA3Wq7FEoWiKXuPbL3B\n09OdljrSqnv1jYwTNpzyJgnzwhLdxMA8MdaUSDEVkm8tslp5kD2ZTCNCmzJX\nx9UfdKr4mLg/M/5hxHEYlVFxQWa4uNg4LgkaB5Zyj6lKpZwSpbmtHBCmWqCk\nLLfZhvd9jDYcsqqCZ+Zy+0bzi+YBMoaeAfFLYDyReUelrK6cADR0EeoRTKBx\nVUT7N9r1VhQlPy7J4eXhM3gebnB63zKP/tgW3EqBcgudeJMgVNq3g+MD/xnp\nEAE+yuVSX0toDRhcjV6AwUAQjNiBhkDyg2QC0cCLf5Nh/8rMdlI+D59vOZDo\nI/OvjOKT8rvJI2y9w/BmMBkBnfE5umxAViI/HPNCJV8NezJOCx5JyzIFFkxg\n/2lV0fLZ8Jnu7Yv6Y48Gvtpv13yHmxufxLdxxppooEM2vgcZBMWw0EEd64Pz\njqXkBQQTFcHyta9OxoPtmn+OMiYzSXhe30C61WdeVst75aRPW4JiU4Uu0RPI\nQM74FKiVo4L7O+ZeMQKhYat1CHmoKCe2bf9JPJSNRrOMqrHJjj8Hgvmb4pq/\nJepY\r\n=GH0L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/AXpl6MRm4YXfn/rbHOaDf3OdKobiLREiwoJ22X1QVAiEAhxxnSSPVwogQwryAhfpVF0WzZnbVL/Zh45WbGG5PcOc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.108_1628822129669_0.23312218253489325"},"_hasShrinkwrap":false},"1.0.139":{"name":"@leanup/cli","version":"1.0.139","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.0","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.0","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.139","@leanup/cli-core-format":"1.0.139","@leanup/cli-core-lint":"1.0.139","@leanup/cli-core-test":"1.0.139","autoprefixer":"10.3.1","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.6","postcss-loader":"4.3.0","prettier":"2.3.2","sass":"1.37.5","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.0","webpack":"4.46.0","webpack-cli":"4.7.2","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.7","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.139","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-60iktRJGR/tWsf6cYMgtv3njmpmjTIDvZt4SIfBoPfmyUM5slaYnBYcgbI0VxxAnDQm8euGCn7X5DBLJuLnkNw==","shasum":"f72182c190b08860c8766cfbca2f826fcfe8e98c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.139.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGW6sCRA9TVsSAnZWagAAkuAP/0KZ2hLaDk8K6yrZa1Qk\nP+WS8SpkNYry4dbaOgFihjFgmfloQCtRmoTWSjRu64WBM21Kb0ONyc/9FVsE\nIYE0vb/jYwC9e420TAdRs9myLCUkcmA6AON0TYEtQb5gyLVePCyT5Kb4WoA8\nGPXWcicMsztxK+ShJBD3tRd7baixFW3tnU7HKG+gUDhCiUt2zx7h/XCbvkrv\n4528SmNxjEdIL0+Xx/2ODNtPYOtun1r8tXMC6olIOMJ13KrLdjGH7n5Abx7u\n+gLyRPnyzl1dt/UM7+IWjQv4OrzQxjsqGbaAMpRrLft5ruYfJeRq82+OokA+\nHhjHzdNmEvKLgvXV4lRGnK6urrO61XntV7tgidQU7lX7sWZNscC4bkzy+zVk\nMxA/YY1naTvALKvUDdjrsOxaaa4FvGJ7oeizKfivPUgabl+T04oEZa1nqUI6\nu9ttJqNG9VGPC1vZXZmwXZY2mmncCpnU5RmbKI8a7bKdUxHBUW/O3Jjzu7Go\nbuGj3ERVy7npzLYd7jD7htqC8lNz13FlUiHD/TzITEUhWOxPPDmpYimxkbIy\nMYViJV29zPWNtusQbE11IQlW10bX3lZKLR9GdPxZKxETbYdjpL1VTBfFPmMm\npHz4lnw4OV4xsdKCykPig5LmFAgBVX7GfUKn/E0Q32Bcn04hmjZe2eVvW8Df\n/+0t\r\n=tshO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICg3a/HvQfCy5E/68aB0HHX7hQ3q13YgmHrulRKLkytIAiEA5YzkOf/r3OLo47i4gu+gkAJ0G0sDrhQEiPKbnzbnSuA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.139_1629056684427_0.9086841381364958"},"_hasShrinkwrap":false},"1.1.30":{"name":"@leanup/cli","version":"1.1.30","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.4.13","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.30","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-+Z0jxiiWWoFW5y41mmdP4YTgn+IasptbAQXJuz3r17Ghi+JrFtqKJbLdbTlicpIhotjf8MMghMpWlB5RSeV0/A==","shasum":"8bb24cf486fb7a53d784ce6d184d9e20b79606e0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.30.tgz","fileCount":73,"unpackedSize":147245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGW63CRA9TVsSAnZWagAAls0P/1dvVDF2zyAl2NFpVMnJ\n7UIAodqiyoiEKW89uKvimcny6tIV8n87tzzSkDihvdOs7zjPeR091kgjjX5f\nWknjUAg6KWxNpfd9UQ96XHhQZKUopcjW4TcBSkQLaJWmR34qSUhBFMzdGuYn\n1oI5g2+jU/neW8Nnks3o7070H7Ig60r4ycTxP18XPvwWgH/zepdQC0M3Fwnz\n3g/AokvJ6w+MKc87316n5fz5q38yOdtwIenlRue1c7viA0Ty0W/4rZu0cOQR\nQa20VxBsY5XszspgPHuB+TChS5Ylk0mz8qrY/LktFbzBfGj+A21r/uO/8bmz\nj5n68lRhosH5iPDVJniFAqjhY1DxAA5gLqu8PcUjXUdwZrQog9Brf98cOFiv\n9K6Hm99qwmVQ0Dg/5+lfQTqy9l+JaITIfTr+++K4wFCMXKr9GAEKx6a/db8h\nSNkcjh5oG/wDSsGyCd/8T9vn/LpQ3oCb9cW7vMQbB13cS0+5+STqt+d48uVH\nPE1EgjNbZISVTEWOXMoAwbVdJVKfjR1+DlyBeMxE1Ayva0d9hW94qOAkl408\nL3h6xRs5tyTlPlOuFje19CcCsk4ZcrXGitNO+wg7YlCNxX46hN0AQtQqGHOj\n3xWxadzcjqlgmrh69BMvrSH2bO+Pb0bHCqD5u2oQDbws4UrrdwXoYw6AAplh\nu3jB\r\n=Bjhg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAGNvr8ach5YGUgWeLd2RIIhNtA+8aJRvN1zBR7qAZk7AiAp7BynfTJhvW30vXqrETfgkx3HHmNaJmfBtUn7pZbxXw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.30_1629056695831_0.8839901982709377"},"_hasShrinkwrap":false},"1.2.0-rc.109":{"name":"@leanup/cli","version":"1.2.0-rc.109","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.6.1","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.109","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-cD3+e6Ey3Us1JSZXk7hNQGV0x1rH6sp0EJoseVrfVD9x/zh9goZLFMyCR08zKFkPzOKxJp02Nw2v9LBkzcYojA==","shasum":"2f0017d94cbe9df4a56074f2ae7d7281237d1ef3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.109.tgz","fileCount":72,"unpackedSize":148538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIV+3CRA9TVsSAnZWagAAdbgP/jn81T7h6aWEqpc6MpPF\nOVTFG50DvWMHa1zvtQMjVUtvRJH1cN4iqMsGgAGhgukyOYYYwA7+1O723y5H\ncLH2QLPhgcb6hyMrV6QgGk/hNbN2rUlqlNvkUrd8qztZUFqGn1lYLK7+zgoD\n/z5eo9TYFx2+hhelW3L0gCGMrR1pzDB7YndPcoktEVIxFG80fwiY+Cd39ykg\nDhf6dJnfW+El648J3vc+zJb0Apz0Mgcc0yEZFqoL8qTDsQI6WocbLUo3OxYx\noVfj/BZ3U7Bj5mivb53cI7yQZOfecSz4h7Ut5qzFqKazuY+Wm4L5lydjI6RQ\ntaqK4cYcwbXiyc1Yx9ORXe913N8sceS036ho8ZCZSj/G14dLRNPOV3xazKfz\nszSmMgJB8TYW6IPnlWW0AeXKRNxpOF4dohR2VyzD2HVvrLOvY2EMkkkrTKXj\nlkvr3zfomIEP/W0KfjcE4yJIXXCZVTOqFyTJ1CByP/krf6knjbuXiv9yuilP\nCtqQjDsTL2ae6hfP3Ty8FVGm8gC4VvAwVRr86fgsLjJdYRVxwDuPKIumrjNH\nxiCdFQ4JVuyMVKVOFq1HuWARdTUg7Wsw4abA/k6oWaHRythlCpjPPfdOAODM\ncgLqfEkuRPlyBhifCdP4pI2CqQzR9tcQ48FOZEUdp8ibvvqxCf0IMVeQPkAq\nO+tp\r\n=SpsK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBU995M3lfv++OeXbluQkH5m5bg3ftiov0/oSVTsAon1AiAhq0zjEZ6eSfaCZNN8Efqiz2pUsmsv0ImYSUEukpUSCw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.109_1629577143003_0.9582714465403803"},"_hasShrinkwrap":false},"1.1.31":{"name":"@leanup/cli","version":"1.1.31","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.6.1","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.31","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-KN1aJ4Sfw8cAsMXj70hMdqXhyEqbelzxlSz/YM9S5IsMgKO0RR0uO9Z9z07r1PzqFKvY8jV7ghV5pYLQysQ/Gw==","shasum":"9c8ac94856c4fe784799c0628935dfdbea172faa","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.31.tgz","fileCount":73,"unpackedSize":147244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIV/JCRA9TVsSAnZWagAAvhIP/2bE6dbb/Ux9Gh3q02xc\nHbFpnwV1FHYYCtoAsL0NzGTalYpnl1gOdtLfFxV2DeraJxjCUykNiXjccrWi\n31iDu5dh8NhUjnJgZBGwAFSIvRT6//n9zToDklOK6UPan0ahWuvDYTNUA6zJ\nsI9Ym2aM8sBHMmI3YYNj1odJ5s0dMwEcR0CNniOLY23zLVKKJtD2eyAkr9aJ\nX0SnYwgdz0PVUT+V+oOtqrOiPnrqbB36NexAU41cEcsPEKP/jYR/WnZkyLWz\nfCPRU1evfSrnn2UkEyMmk0YW1UIz0OElsKJn5JJygveXM3kxpFJkM2tbsdh5\nDvemHLIMJQRuz4Igl73VVY9vrF7PoMP4FfkmQVhjgHTMoApqfL9Z+ACzdIft\nfyuNROckVGTyaGvaLJY56HMEOxoB1dvihdNalsouR5jDr8T8aYUrM650WJNn\nfqwyFNBNs4Lm8niQgewtNMx+I8L2nLbxr51zMFMYqf2tl5o3fxZhdgpUA8mC\nw1fQ7T9sBo7IalPJFnGxiacVgMOi1+si4OPQUHbnBaODt+YP65rWapNwZBzn\nzaUNX6zev+4e//0XFvG5zURC5l4HU5xg0AauW1wTbUPNVuxz0RxSpWQFF7XP\nVNfYpIsNrsEw8DeCy6G29l/Qeuroz3wXEM/OCUyCnejm/DCukS7YOVP3ZMHk\nnM5M\r\n=NKBF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICP0AJ6cUViBEDyctPZzwTYVLy8c/XfzxvBGwbWjanWDAiEAiqHRaSu6YRxNYTZ4Yhg1V8/U6Qep4UTfohunPQg62ug="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.31_1629577161199_0.28166092309857893"},"_hasShrinkwrap":false},"1.0.140":{"name":"@leanup/cli","version":"1.0.140","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.0","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.0","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.140","@leanup/cli-core-format":"1.0.140","@leanup/cli-core-lint":"1.0.140","@leanup/cli-core-test":"1.0.140","autoprefixer":"10.3.1","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.6","postcss-loader":"4.3.0","prettier":"2.3.2","sass":"1.38.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.8.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.7","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.140","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-XwBp9sp5ta3Im8Ye/u0zmAxMSJ+kr+IdSpBgywlZND3XXWTbu5+DtKyhhMM0lU+jFovXsMBrPFIvNRKJ3PO44g==","shasum":"94082199976cb6d8fd47282fb91d21f9a72edda4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.140.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIV/dCRA9TVsSAnZWagAAI4cP/1JTk8kZjGJI9VKuWVox\nlp7d9EILkDk9RiPoVxUqtjCL6tB9hzONY9WfSEUPRnau+kHJEcmDHqdCgK18\nEleU+bhKfzPC4RpntHv2km3y6cLYih6/1Qq24iqIFXkYeX2z7Fud6o6AOgVL\nKAVK/UzaZl1uAnbtSfex3m+PCKtVnJRDJ8pdhz563PXkjhdryC9BgTxx4gWl\nHL6TOph6XpC8XnVR7sa8VUe8zGgXuyKK9BTk9XHUXGw5hmTlzC4EICxlMcO+\n15HLVnQbnLyyos+jKsMQmC46aBTsqB0/e5PsF56x2Cv2zGZxUnbXecBVwlil\nhiUf4IKgVHe/ZWc2RL1cEhWyVtkZ62cVgaCFcdKCb2rK7OnguCAJButI5ZuN\nDJCcQOWt0OCpIMBghu6IQd/531zWLkWG1OS8Ug3eTiPC4DBYiB4BzZwxCCdb\nenF6Shv35vpqDlHZAOeICpJv+yZKqlLAdYn2Lz3U7H5jQ0KDp03GyheLUNF2\nbKq6QRYHmBDuQDy45ASWllqrvUZjVu1RYYYpvIWCILvfWDoSjehYO87Bkx9L\nlUlYTVa01ClXVX0AasVJEw1VRefADUJBsVifZ2CX6UdZPU9+oxQVotvz/IRE\nowpYQcDA7eeCaUidZzjjbuXwtyeyYhOi3o718nA3yKPmHzp0QQErKwnWy46v\nhfDX\r\n=zoxC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB8mpBpLeFkzzwk8FRaOWivZxCh4zAQ4INGjE9BzkDnTAiBQq4pPFhgo4p99wkisEBMfmpFLrSh9PkOYfmvwfDbXUA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.140_1629577181801_0.4343844983287224"},"_hasShrinkwrap":false},"1.2.0-rc.110":{"name":"@leanup/cli","version":"1.2.0-rc.110","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.1","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.110","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-/Wg7tB2yhWZAHWqcwE58gLL5T+M8NhOJwJ7Jd1g5HTlIA1pf140Br01G99uuP0zyOIHiMhO4CZHlzbNiYNkYWA==","shasum":"c916e712f556010a7009352e785b5af14bbda775","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.110.tgz","fileCount":72,"unpackedSize":148538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIePRCRA9TVsSAnZWagAAcZcP/iY1TaLmSHRniSqh9jEH\n2P6Kix50zUyfzJ7uA6AnwitRef6VCfuXae9gCN6sYRkLXneDOlv6IqAK4nUA\nClS+emBn6KWPOchFBHYNmrtlwZDKPIuCVD+a74XRGp7sszRNHpXajX7bTxs7\nWTOElAvZxFn+SIUK7fIxN1En9IxK2Q/U0FaFWxt8f5AxFGvTp/2IvN0Ahvkl\ni0BXgYharfaW/gzwC0KQXdWS+YuQGtNS0bB0FC+qv5deRlX/vPGcR4+i2OCX\nmzHISkgyw9r2hS5OaunYBQuCxg0I1idV24IS9GJhla5jERqz7bvliWriRbmn\nFOuKt+f1UL9vx2t1YWxLrerZGmONIb5RqGwNKS+Ay6PPgjZdGmq6DqKEtPqu\nDpXIs66D7Z2GicpSxqlYZPxwpOOqarRATEvjAzxitIYW7GODqX3q0E5U+Va3\ni9CSFlY6dJnjaDTTFFX+OYTCugJK3CWbmjqIwjBetU1tmHyV4S7UpsMItK9m\nsILmlh6BjHMTRnWZugewLxBF+qqLfwScsylgYvjHkpP7U3sa5UgaYiwXvrTu\nZcknkOIN0OhHiLnSe0KAcJOnf6/JnTtvLZfsUIEpMx7Mh4KG2wPyHN10qmjG\n9zmvZ8q0ixZ08UTMty9qHVZCNZahA7jp869yfEkTsYksuJoPu3zA2KaAEO2T\nPZr1\r\n=2lGG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtMrz4UHYgOF1LLGl0SLbzyYJfv8uhWvyNCkIIxCMpBQIhAKytONNqAxDsNYhkxWXbG1jexMDWduH6Cre8lJX2M73K"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.110_1629610961706_0.7982262652321908"},"_hasShrinkwrap":false},"1.2.0-rc.111":{"name":"@leanup/cli","version":"1.2.0-rc.111","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.1","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.111","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-unsIBoCye1T7sdZ1wF8vN82gH+aQmi9fSepluUC3dy+ZMJDlDesjcg7FiQzDxKsEgY+rzwVSnTktk90kksV1fQ==","shasum":"c69b5de3429dc9775addfc092f6de6d40f985f30","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.111.tgz","fileCount":72,"unpackedSize":148707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIj4mCRA9TVsSAnZWagAA6dMP/3GjPjlg7cFPUpYb1QeK\noGtOHWhBSjIYKRW7gJMFxoEWZcvVhFpB/jsRJ+3Krn8EIoLg7fqrKlKsnEKs\nsQ2Og8Py+ClmFyu0V+X3WnQ4aU5cs8NHNoHHYkMEu5HxxaCbdwbmzGD+0ROd\nZ9Ztht54pNbFhd1XXSN86WLUrnCfBL7BIJvsZCoOV1eT0pY4oT7Nkcb/3snf\nKMXapiEgPGScO6fwK8z3b7QYtk1fnwmp8YavkfeWpLu+WLLNyk3+9P0VbHKX\n0DJLfohvUgifntMRR/Y4ZBQjdvJ5J3BcwCgmF+k/Zy8H/34XOQELIewB7fvg\nII9/MIOShUdJidVBHJvMHlUiwz0mUd/Y77Y1mBnWGAFokiQZFETmKVKGejy5\niHzCh3JqClx3/1IYBuKGr1RaKidierXeShxNdxPS2acvaAhqPTN+U55s2jcr\nhWjunT2cYLMFoomWbm5XvHWtB6NUvw3LO8OFoXM4UlPEGfyw7Rv40JT5HUPU\nGDdiqfkYIu0Cmd9MzuccjS/y55Tz0xxOQ18ScLjqiysYFARQGl4SeTPqVAV2\naZRojy/0UQGGqcT8Wmgsva1mnoN2L+S6JyGJ7jvIBp5qhtujkWA5Oej+6XOy\nGYjcT2EWnlFDxgfBZ5/9Uw4ETK+BqClZSsjKLsghcuaDQD5pa+zUBB+o/OaD\n4vl1\r\n=jMer\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHxtAW0LpRoWQ1kl0idIzxRW3IuF5IYN4iwP2eNUJghJAiEAlH5wNjMvkiZHy+uDGfzXq5WiTnDTNO8dRHnIIHZg6gc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.111_1629634086348_0.9436223148912879"},"_hasShrinkwrap":false},"1.2.0-rc.114":{"name":"@leanup/cli","version":"1.2.0-rc.114","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.1","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.114","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-HugwcX6lAtTbLFDlSTjLA/Uiab+FCTEMbwlo0hlhowaNQkD8A1LVpVKilxyViFZr/neo+e1O/JKceGJrw96u2A==","shasum":"32cda077e6c3aa3b850c9a90f09dc929bb92459f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.114.tgz","fileCount":72,"unpackedSize":148900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIrkUCRA9TVsSAnZWagAA/04QAJiOj244le+jpKu7Q2V5\nrup445y5GkH7WLQv+fvac0PnkuWvJex571wkKtIvcTFNpSuVQS7yH+qGVIBb\n+V9J/3dz+yoK4oxyFIDEtKY4KTkNweVIPhk1EwaKKiJCaqAiWWU2EtwjnJBU\nRYvSnXR0R2LKNxUtCyH4oxP5GlRq/XYo7gHtZoFTay9IvJsYZAS8OMD/bXXi\nfv3n+q+elBNOjqKPrfpemvZjBt/bVDC6OnjzX1rcdUWfIuMZZLpk9fNqjWCf\nCBBcEpafdSOjdoqM8wjAeoGe6X6Kz8NWaN8rJNEb2VLICQB9yb7wQxN3+/jP\nhFc2vfBQpy7AuSpFMwmAAA2W8AdjNXyJWNUJgNinfZD/AeY/fvQ1D0mNPRKc\nFxxgcrlOC5CnrU85DnvmyRxqWv3lHqwfjFhjl5yBtd5hWFjUNj0PTfXVwN6I\nNCW9TfnLXPdcSIm7/E2ZA+YzQunXFTCZxbVFiYqJ7c2toWLzH0yFsm/+kIQU\nOhmbjDBG3Csongrl/tF0GRanJsDsy7P/+IZ4cW++cCOEAcFDotxS8rygeKmm\n4PpD+TjvC9kgYCjhUmcJI15UyNypupnJ8KAMc8D2nO1CfRJlqaXi3henWUjV\n3RSZjRkWajYsAx9dvBSgNak/FLtA4SxAWLsQnkQ5qPv8ZOOfVdQrd4HC27gq\nOJu4\r\n=B3Ty\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9EMvMkStF6nMRIvfUaGEkLh2Hx5ShgO6h6RDmk7/OGgIhANTNhUzHUoMPChuBqD9UGhOAldKVlKmrB6LdfyE0ldcj"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.114_1629665555795_0.2352267816363085"},"_hasShrinkwrap":false},"1.2.0-rc.115":{"name":"@leanup/cli","version":"1.2.0-rc.115","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.1","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.115","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-HiUK2X5KH3eAAbaLnk9TrBiCX9+ufkCgTWM3SSIcaL4Ta3yqsthTIn+pObPyMEdoX2aWz0tBV2RPFVyl7cTPlQ==","shasum":"a465d6daf902864baeb3618cb35d376798277684","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.115.tgz","fileCount":72,"unpackedSize":148900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJo6kCRA9TVsSAnZWagAAGRUP/3mAa0Jipa8FhXUBD+jG\nQZ9HijYnUN7OtmGOzW2jJy80JnLCTnIJrBm7DPB+t4En+Nm0VazQE6Jxqk28\nHHM8taaXm4FOmcYN8psYo3w8xCVJX6VbP43jTx3RjfxH9P+UNfeUSgGRE2B0\n0vVbIWyUq7FV7sh7CQagdXhJQYO2bI5AxPUBIOZHvWkAh8RfzPsYL+cRoTvw\nMDk7y5SXzKTkZFFI1pHvlLSjtXhuYFC6tdHf92+41HGbHZfX11gjIFhSjP8Q\ns1XTI3tt3QETwRDW7bd+deLas6pPWznSXzUTUi6LXaCcmnmKeEZCvpvEAPK8\nwa2S1ucBrMXKE3JpBWqSoD/L9eBbHL8oTOJ7DiDgxJYk0/KxNtUg2r+UxmeV\nOI/0/Mjor0I7EWv74nL5Ube0qUWPQj5YjddGpM8ww9QwkkKCYsar3bjaIFAz\ncn4sJiMf0BOYIDobHo4SLhZ86XZqk2gja6THpEHbTrwpUIjNOQYVyEgeYysR\nbV1Plg3zaUaOSgHyoAKTRir1rH78r926soSmmwg1UjVinj4PUZlOjB6BpuB+\nREu5BXWd5sW2cSGRqNwV1b+TMNb+nCDDA8zldgTkwbK3sWQm8rduV7gYcJkT\nkhAcndYuoRBzoDxw0E0zs3PT7aYaWjQ/K+c7BjVoqBeAXlOR4vlz5/0fzz38\ngyAQ\r\n=hs+b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKxzTdk0kKsP5TcE4hPah2z4e/B4ZHSc7Sv0Tr7dwt6AIgOUrqS6NF1exKqmOB9lY2wZdJgIADuf7El8VRxa7ksvs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.115_1629916836110_0.540259606825642"},"_hasShrinkwrap":false},"1.1.32":{"name":"@leanup/cli","version":"1.1.32","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.1","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.32","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-0FL/NWCWFrY936vns1NrF9egDiNk+koisIgoOYpam+xLPS5HFw0ltmYomhmQJdW8U/1YT/g/MzZlWz/2H2BeSw==","shasum":"21c743a95ea96e297fd6349f83c3622436f6d649","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.32.tgz","fileCount":73,"unpackedSize":147244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJo7UCRA9TVsSAnZWagAAxkkP/1lGcQ21eU3BtGnwGe8t\nCS63Ab1KLV4qgGmBzAWA4K/wfD8CLKUqOlkcvuvfCf1nSohFYl+ct266Icdu\nIuoEBPdSAPVxsL+uEfM0H21754LAM+aJ+aCl/dd5xasN81F+6Rg+lHdfEFPH\nnqntfHuzKChP7MVitmpajD9ZOEx9Opy22HLKhxNmzmszJGKoKb1T6C8nElH1\n6gLD+aCznzJlBoUz38y6GoWr23tneE37SLLK14NexGpF+61KIZubwbTOBMkt\nF0G27lLzChMb1ib5mjCKAE7927Siel0/uB2dZKUWckgSqvRyAkiSXEO+859K\nbhkr0+aVX1fAwWTDdUyClSXUTIund8G9W+HlGk2OG5QPi9i+f86jKN8/KbUy\nrOBr93wvsl3dt3TJSJ3E7bD90cVBNG58dwbVP8T9jpcdVU9y1mVZgWUxiXrT\ngzXqukW28Cfai9mX85nGU6Ldfq6Kd58+xADR6WUI/WGB4U68/X/cIgMYDYYy\njZJY4ht2rET+d2UII258XAhRR2grQpgytamFojwOVAfDxVVyfPyO+tX0BgFs\nic1sH+IwoL6/5MVIW5fLG2KxeQxCHs4TupP5vOu5RUyuDhQduAd6UZacEywD\n3TJQACL9/QtvcyDo5mLVeSaKyZ0fx1uwCppgrxDoiGIjvniTLL0pyCqkHYPm\nhNBH\r\n=/zRC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqnTXMKApW/Wgzutdafi7lfoPsY1xUgi0yoa1TJhR8fgIgGFArVLCvWnwwvbR4bAw+lwq+bQXbrBIEUrz8MFQyhEA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.32_1629916884086_0.47902859326684033"},"_hasShrinkwrap":false},"1.0.141":{"name":"@leanup/cli","version":"1.0.141","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.0","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.0","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.141","@leanup/cli-core-format":"1.0.141","@leanup/cli-core-lint":"1.0.141","@leanup/cli-core-test":"1.0.141","autoprefixer":"10.3.2","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.6","postcss-loader":"4.3.0","prettier":"2.3.2","sass":"1.38.1","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.8.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.141","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-VQdH2r303BEhe4Tg/Klt3xTAl3ZCkXJLVdvD+48gEJBO65lpoI7Dm6Fk6+KFcyQiwqkXYqDMHQ4LzSKPqqzAww==","shasum":"09310ca99e21c80cd86a61b7674a931fa26786da","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.141.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJo+SCRA9TVsSAnZWagAAirMP/132EJ5HuLbyN3BupJfp\nWhBBuPm0DjoTIC+bF2l2+wEtnR0Kt0gMoNXRSZatioxhwj8X9/4It3HdpGra\nTAqsrXkrQVum9LNOYtohxtIgkW69q5+5S2vjo/ec4o7nIz16V7tvusSvRdBn\nl5dFT9o3bYvD+rhp6sTjLwJPtZGB0NHQeoreXpU2I6KWUfnVmuzgPMMsl1nH\nlk4GigrJnSstqJV0vl6rg/NFvjFZWYxJ1fykBA8BYSutOEhXSpQ2q5biOh/7\nyyejUEQvYIdtCcDmxu6cY39C9PfKjGh0XynoY5wwT/4pIWU0Wd3ZReCe8BKD\n5R5ddUH3fP8RGWZRcDN6iRaB7Qi+1podtMzALAy2wF2Gtg7Zjrw6d+aj2ZZ1\nnJUthssY5JJLN8WEb/dYLeLO1UOFlOzTHMgpb32fh+ivi5cU2oeeEkBqvJit\npxmi7BUGuiYx2pbUq7udKN8jJree9PFFcm7NdISV0HUx/cVncJKsr+WMPXnI\n7M+lNSKIygggvySgE8EXP00adFYgzgamftqeeXaleYWgJuwPnDBUzEaYKdMu\nDBq6FL/+67O0W6cQr078BoZFReYKyK7oQGZCCCAOn2rH81JZzqMF4q79O4sR\nfOCdu1sydthU/HpRhHiVg+SwJ+CyCw6e6bxTgKobvwgdkoCtK7QZwN+8J4pd\ncgvS\r\n=MJXk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqgqVBAZjqv/NhxL5w11briGNFguOi4SWGDU4wTbyPXQIhAJisdwIV9DGg12fNt9VnMAslECOf6YGVbdEhO2cdBYLx"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.141_1629917073839_0.4187398920854286"},"_hasShrinkwrap":false},"1.2.0-rc.116":{"name":"@leanup/cli","version":"1.2.0-rc.116","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.4","@types/prettier":"2.3.2","typescript":"4.4.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.116","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-KAmhi2IDaXKlap0nRUyKEgr/ZW7gApvIIFG3YQ8u68vPj/aPN/E0B6YM6OkJ2fNIiEQ2Xy4wE/81Ha3fqyAKbQ==","shasum":"65d1b9b2343c3657d85fdf3f6339f137613d8577","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.116.tgz","fileCount":72,"unpackedSize":148415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKcOOCRA9TVsSAnZWagAAuEYP/3+5nYBO5RJ4OvBdrCoq\nSL++zpkUOEqMky3Rq1yC/FUrAcfN2cVM7RF9v8gFb9fvntUng6uda9J5vHBI\nfpEsgKnxEGrJAY/s/MLpJqREA13nlj5/WBoShHO9Jn0ZBzaeIHv4nzS4p+Hr\nbFWYkkV54VuKhNtUVFpYbFrr3DRJHHp+BGfbrNfYvQmjz8HSTU30YtVjMkGA\nlbVM4beUJ5tzrwY23dTxj+/1O/x06+avDuKqNWoI53pKOc6zGiwRYmCIYb4/\nwGBZyOo7oXV/ir1XkvzHjzhQ+mNqCQn+q8xWacxi1litlqFmzjUzpDHKU0N9\nFxohs8l+9GA5yLL/Nh2tSewTcRQowM7Xe9az/8l65gEPVAKxWEj9Wz0qIhFY\nuNGmreEUVrQZ9TugvEzNz0xALTQowS64YuJeDrGWUNKNXU+ShSSqs+gk5ZFT\narjwNd2/2HWhouuKscsfjQAkbBAGTQaR58YNDl61PF0JJV5etm5/9imksRTo\nnPszQT9KNQHA/A0BZdQwvSDXc3kDJ4ePM80ErJ6L4wL0OHfj7uFBqlVyQ5aV\nx6PFl7nvlZz3JxRDc/uU8aEZR661a0bwb/KjLgYp0duz/KP5DXGWsBxfzPF3\n7/k4pbGPmMwqTgBuxac+rnzVhdblFFU5jh68D+xFPjEBcrmyAHIRuqWBZsO9\nViSd\r\n=TLeA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDF9GomotF7DJ5HKLdyhvSn4H/TIdtIdRD693/o+galDQIhAPE6CCU7kl4xLDxR80eeM6WliZlsQbr72H45nGJtS0OV"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.116_1630126990273_0.859882730792475"},"_hasShrinkwrap":false},"1.2.0-rc.117":{"name":"@leanup/cli","version":"1.2.0-rc.117","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.8","@types/prettier":"2.3.2","typescript":"4.4.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.117","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-ElV4dnPuEV+5iHiYTLzvAQvibNcbKFSVpaR+wOceLGQtinHYKN0TZcXrwhO9/yysQ+mfxb6oFPUgYuIPeaFlQA==","shasum":"64ddb77be1cc54b5f1d5a592e93146775f12bbc2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.117.tgz","fileCount":63,"unpackedSize":138371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLVzbCRA9TVsSAnZWagAAus4P/272ikAYFm1tGOQ9GLd1\ndYcsXtenaI+JRCjdm9E1BpwNSXozZZcMFv82Svgo1PEKgw78VkFhrxZVeAf1\nkJqAgRaCyWiMk5Sc8hU4spZT4g9JYBON/Nz14IlRwzFFBITCz3W/q6eILwhZ\nlZsPwAHW81x8WDZsXrnDRMirUCLbAHFnme4mQ4HUru3+8IsZyElgzbnF2s0q\n7ClkBvE1kPjwXjVjCU1MWqOPk8N/cHNxY1JNXaVhoFh4F/3O9Xo0S0HcPqvV\nIGaYrgqGKZPjFoVwZjm9R/5n5oU9dAkJMc/g2DVtpJ/S9a2XoZBeH1UBqgtl\n9398JeCUzITvNFM4XDlqY1H+RLEQXK5t6gdkKI4r5c271UjVxXNisoy/ToCB\n95WsMuIM5YTP0y8YjtHLJ8qqA6p4LuKjBNbnNjcRkcpGK+bb+A50+tniRh+p\nYQaYD4I/C2GWJVAXr/THx0iNJzaY6t8DSltwG6Xt03xxiY/y6stGaDDxZz3r\n5llTM9WdLWImxkUbC3i56Syz1PmbZ9ZN8VT4vwJ9uszKUa1crqA3WKXxKy3A\npMj+NNX/cfaAK4zLbRKI/EQ9udJHYYFvih/HliXVI7IdV2t8iZPTtRhk3EDd\nnnMwKkcKi/4/5F1GJvW2p3JmWM5014idmi1qO5Sq4roTj6ep87/cPXx0CZKT\n3I/D\r\n=g8Kj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyZ5h5bFvzxIDZyOGnH1BbKAnAWO6+nfetkJeURatAiAIhAJ4gHFI1z0hBaTE5FkXkrNETuPiVQDbP5dG44OvYS1MB"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.117_1630362843181_0.5007912618361614"},"_hasShrinkwrap":false},"1.2.0-rc.118":{"name":"@leanup/cli","version":"1.2.0-rc.118","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.8","@types/prettier":"2.3.2","typescript":"4.4.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.118","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-kvuu44X/IryNa77Nd/JP2rgJWmJprjLMwwPkHkHRnuZabfR7HBQqUf8AoUA0SgFdipjOcYbQi5TzxaycezExGg==","shasum":"16f6b2e99f343ca7a49794c2ac31442416c4799c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.118.tgz","fileCount":63,"unpackedSize":138253,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLWM4CRA9TVsSAnZWagAAhDMQAI2VJvHgEDfKh/pI0U8F\njBoAuduk7V/zFcE/ByWnoXxhPx94RmmbT2IsY9hMWaCJfmeu8Y9rnWvQHsuO\nz399l8VV7VwysdqtZ/QeyKLRoByKwEcGCRj05xemzmoDzppqn3cJgksnM0hG\nZ34y3LMN/Aahb00jr1Dm2S7iBN/oXriF+6jjz8E/ZCi7vPf4NJ/v/heAp7r8\ng6eFcWOKGaCrzmWRjRIk0sQhTrhOGH5WKQH9wBtRr9CTe+l6FvJnQ5qclaBE\n4+1DJ/HffOEkGVatm1IogRJs9n1e2HE7JiqDGbJRi4+BDYTuN0BuXTodG9IJ\nr9uBjcR/yOyIZskZy4e+/HNAbOH3AeMBM6CNPuQ50d/mqH7YrNF3umGvN/aM\nvsvilEdnDn2ERIINHAjAXD8q2MTHwR/685AgnQ4aewt6o51i3CAofiVbsWtr\n5w3tu1656MJuMROzlmGRMJGhZmEGBY+gpcBhajezuoYt2jmiLZiIqSPsUrxG\n8LAzB/0UW0/DppljtlKt3geH/VBpjuIaB2QyGhD5KS3OTyR+LvjFY3kcp9rv\nGBZ2P5ACsLJdAxS/Poga3wzagtihdE5N5asZhueVcnt9wwNxJWUtvo1NyHbI\nAFzzfiNsPyHwVejRdPPyB7SbVzy0tO0rIaGYKgIYVu9p5q6eB6vEePkKVk5j\nbDWn\r\n=xj54\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyBsNa1r3Q9W2v1wQ3ZrL8RGRX+a4gAT4HYxL7p8Dw6AiEA2LHJBuamqlif0EIKethoaWBmHd3c/46Z0mHqFjraWyg="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.118_1630364472528_0.36633686905337526"},"_hasShrinkwrap":false},"1.0.142":{"name":"@leanup/cli","version":"1.0.142","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.0","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.14.5","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.0","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.142","@leanup/cli-core-format":"1.0.142","@leanup/cli-core-lint":"1.0.142","@leanup/cli-core-test":"1.0.142","autoprefixer":"10.3.3","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.6","postcss-loader":"4.3.0","prettier":"2.3.2","sass":"1.38.2","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.8.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.142","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-hAqmp4sraanfMVCBKKCWPEsh0yEXSw0oeMEaEfUoSOcGBMUoA6m2IfA6w7PkMMLO8ijvuDQwo85bPbpvsHhz4A==","shasum":"e9d4d6bff62243ee36dcab7975d860e95cbaa6ac","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.142.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMAutCRA9TVsSAnZWagAAyQsP/jF08l3fZE8W7EP3vbxV\nzoU9VNk96UXGju3ecGyoSUgP6mvRpQyRx5cRGk01foTt4XOEo0YFouHuUtEm\nIDgUcehcekxrr9+n2nD2gujexE3moWrYkgaPI/VhR/5r9tk0zLWOXJh5G2J1\nzhhTFx29W/OxVZ/kpeLmpmDaiFsOpKR0QQBV6C7ii7qUfNdnfz5impfbYRK6\nXzfZx4jaVYXIfBCDkLsZjFtcWj+NOu4S/0WPkF9+t6TGynfYGat6stoKXxNK\n22pFJrJZsrrblE/sgyEAVgtM/PY7sM2V+qKL/tg0xEpCL/PJPG7SXILSgkv/\nSpDoQfqVDXgdZE2YKhVlOptBFxxpYEfvF7uUCZM9280y2Ml/DLsDvT8KCQSY\n4p0N994jF6RPJz/RjLcMMffXKrQk+FTFZTzoiJsiVCMg9imkdv1uCbmS5UAd\nitVsruTYbHYkSQBx0vCX+63gWvb/z9I2+Zos9HAROGE66ZSRxbD7cVVShG1a\nRQ28IyU5y+4KX+eca/cMJlg3TKVAg9ckTg+r1e5fdeiYOFDuPWM1Pe+iym21\nY07GIMuO5NCbPiB50FLm+1PzppQePyrxoJdwkK96NUPux1le5DZ0r8d/q+VE\n+Op6UFRSg1QNnFmhFEus/5eeTq7vYN0+27EEmO3aqYn0DWIrmn2rqB7z0Ydj\nkISR\r\n=mE2m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqTtCg+Iatp2+LTAxo90qFLdxLMdNFbuFKTNAfHBhCkwIgLH1rhgbzxyATkCy4uG2KShT5FKxk+MJT6hZMUCfMJS4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.142_1630538669006_0.2790659278227494"},"_hasShrinkwrap":false},"1.1.33":{"name":"@leanup/cli","version":"1.1.33","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.8","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","_id":"@leanup/cli@1.1.33","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-LwhJkT5IHnWqpEcdMyr0rZ3qwul54tc5Q1LxZLfus/CPY3QdX90ii/wKIN18z3pz2Pix65Ei2VQUdAiiyi+V8g==","shasum":"15fbe055d2f659823f8193bb4e1de1f32420fcfe","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.33.tgz","fileCount":73,"unpackedSize":147244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMAu6CRA9TVsSAnZWagAAjOwP/Ao6J/RYhXqxhGjKCCj1\nI5nbIh+Qb9+dqv/A/KNg8UI/EjPMyfe/c86Xdn2FpbLt4Uh21NtyThxsrULE\niaO08r7mhyYpbrI1zFExuUl6ohjlldEPhC84F/U1wZDY0+9Blqq3WBZ4h3s/\nMYDGG+VsflguPIQwtqpYUdpDSWKCOGT0pLILCp3hqvKQCcw7HZ8byy22/XAv\nLkUl+tvr008Wi/pfCfDA/l6+NFtlwIbFBmqzgVphbPvTb0xQflTv6d9zgzd/\nLizpFQ0Lh9nksVa71do9Ulm8LcgthII6w/a+1wuvnJa21xtGsrKYNDYcUjup\noqDDUbwg3S3mtb9y9hhyPq2cx40zeJzjGsb0PXBvTWDpkdMdzxvzjFkwHSFc\n8OXfhqOO2Y55T0dJDjlAige+KNgG1/kgP/1jCow9L/O5nP7XgkAh5Rla5gCC\nWecuf3eXT9DTCf/Rc6DXeKdEfBpkdhZ+imlNcku5dgROBps03HZo/cIPulOu\nbZkRiQ2ZJqNStDkpfqnHs8kc+SsxDEHyWmyRQOv+1amE8QE+2AlA3od0sAUq\nMB3UPHu1qgz//kIXgsVxFycaCwkoBDAgTOOIr0HqsrvuvtCrTvDp5oTegUq1\n5FNLmtrKdytxHudT9C2reI+CJKDvEV/hIc0XcjP2WJolKFASwOcOomeJfwb7\n6bcE\r\n=KRgk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDddkTLWuEGwlhjLhaUGB86ntEFJ2F/ZF5cvhCghUohtAIgViv8J+oB+Nk+NoDCX2jxVI2yZ5sUakR8KIKGN5kG+jI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.33_1630538682187_0.7219552748255984"},"_hasShrinkwrap":false},"1.2.0-rc.119":{"name":"@leanup/cli","version":"1.2.0-rc.119","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.10","@types/prettier":"2.3.2","typescript":"4.4.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.119","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-jkcKgM15+3l/NDbxcEOlfuWAHU9RW8197eMwT3I/C8Jagaf3YGVEHPdmge9fs8TxRfm5AEOmRwafcBxQa+0cCw==","shasum":"b9e61d945ee6ff7d324a672e2317e1802fa98fff","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.119.tgz","fileCount":63,"unpackedSize":138234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMA31CRA9TVsSAnZWagAAPCYP/RgldFLWJnfsaTuah4Co\nk5NocAdXs4Q/npuCnQWI2kcbPIQnwV1WUAw8wojRITaIuedsI116t+8J+mvQ\nNvWCmX+X3xYJxeTgcYTyd7PjT/TXpHJkxPH/7W7hSVp+N2mDq70I9bc3s9IN\nVggLLXJK0h3YYYBDoyhnqYEer5ygclkv1Jhw9o6snk5BQbsfPZuK/mMr6Ztb\niMwxhr1MM8JKF/gEBGOHPkRZhbxBPYC5lGUsfJRoXECzwG78Gl/ZT5TRnYik\nYlSuwecOdAOc9JDCdXqvg4aMNXEFLJkUFrf4MWXAzDsi8t6Mhx+Xugz90/+/\njijJfA7evONb9h1kFVnrBkpCU4lngVU/9CLH+2ZnOfhv/rMYVtYSZTI39fU/\ncBaBJrO3Si74Zl1ASFCIUI+4RqDnmiJRLVvwMHlPwKOFLbz+cuvfMyiJSgqQ\nR/jpSx9OJHnh9aIMXVQRr+qJPP+4S1epXx7DhxmBMHvNwUB3uPxFN0ovdHO3\n6QMKMbxaIvDg4KbY51jvr0xLY93KoXfupRWKeJEl3U+9/oLRBh+epuMJ33BA\nlgAv+5nHQBn3kiu+cPzY4+unmQKeIVGk+J8/IR4C/21MdGQKx+OinlnvcCRB\nc8jln+oRtKE2wiqzWKJssKJUEs+b+WR5rCJA/QQTjerkXpSxVaAEJz0Nfv56\nn4rY\r\n=X5AN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyZG0u43QsLTWjZbuHxyPC2AFMzmumVqBgfheyehVHvgIgSV7boQjQ0A4BNebUumvibBSjw2ywAA59iRnQh2vbldM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.119_1630539253704_0.7166053349290256"},"_hasShrinkwrap":false},"1.2.0-rc.120":{"name":"@leanup/cli","version":"1.2.0-rc.120","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.10","@types/prettier":"2.3.2","typescript":"4.4.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.120","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-aN3F3QQdq4Pvan88ty+gEmox0KfFh5eyji7TLiXAXcisOyegcAYayBdaX2NRGahJm5SjwAfrnW4WxXBYg6eMWQ==","shasum":"dc9f0ab7a7c0af9a6952dbd1d1f7d6b25758f716","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.120.tgz","fileCount":63,"unpackedSize":138273,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMEQpCRA9TVsSAnZWagAA4XUP/2VyxIBWdSipWo2ddA6e\nSLFAsT8gqAdpKfhTU3V3IPP7/L1qoyoLb76CQjsEx2tmfoJqzhAeQMSpwUCf\n5JbLrN0aeLzNCgbVBsFJFCQASHwAZ7GFi24J2C+10po6EVqrd3M2a+HVg3Nb\n/HtWZQRgwqh4P8nFXRRKP/HrruL31xsFTjNlbAfQuZoEZdXnyZQ7ZEbi/ze8\nDEJ9WaHd34IpvIepg9mTjl7yl7HBnm4i8XJZS8J3aae1ZSSUAWcELzp3f76d\nhELrA67imMIkQdKSyd5lHNn4EqSgm3tEY3IB0HXk92GOC19Tn8Fd2KqEVfBn\nWiBLPcTFoUncLA9QYLRclqCFETy3dhTKSO0gQ0/Jnq/tw6lVZY1GOB8fiD75\nCmfaze5vvkWMfOIijVcmg96RgFD/xdTGmUf1+SGkQO8iSve+aio3/NT8fPiw\n+2gZ2gvnPrxc1lR92RWG6gru15UiLe43o1u9owRZhNMSmvvXwSRphhXbAKUH\nTaRnvPaslce8TP/9tUz4eG5u2WXWzIVhVTPZo2TTW8CBD3x8p06Ay0nxsIOT\nWBgFkwFjnFbdGqTdbYjHULRGb4HtzfbPQP+cVBokATJjndZaeAUk9RZ+zbVj\nWrkYQsXb0xnPIELGNA7a14YRFF/qJ3qDhnYuGNpkXy82pS230MJ+7lLKEgXw\nFtHT\r\n=hTvo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICkjerQOqJTkbsDAOwIwYAU9dxXBXNBLpE9H1YpVg7ABAiBOuFBBkzAzvOwDu2bXKI33J/MtV385lYGNgM1PNzLgPg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.120_1630553129558_0.016366495419273486"},"_hasShrinkwrap":false},"1.2.0-rc.121":{"name":"@leanup/cli","version":"1.2.0-rc.121","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.10","@types/prettier":"2.3.2","typescript":"4.4.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.121","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xyJvWSdDb6ZOByDh8z78J7Y6eeebI4yENZI9X/RrtPEw5UbadZvVxWNGD8kQUTspatle161/TyzEhNN1YErP5Q==","shasum":"c98024fb3261199b6eb5304605e8f459496fe109","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.121.tgz","fileCount":63,"unpackedSize":138273,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMuYjCRA9TVsSAnZWagAA7YcP+wSP7bGAjwLSJ3s9tvMo\nPowBshchp4LfaL9dR7PJvTIMaE7NqaVy6o0KnzgsgWzYPl3Z+esbnPk774ls\n3mTYEJL4UXOLrXqBzYo7KKAg7sotYp0vNDEXxyqLFgNS3At8HnOSKkFtT3Ll\n3O+3vpMRNxNImF+KYzXCN+4EJJ/QUCNoLISKD387z+I35J+ZVdNyYdU/SFQf\njLKqkuk4x4WsSG2T8bGGIhZDiwQxqr2eyuj0GESOMmltxKLKXlmad0uPRBSp\n75UxNTyzKAhh40OSt+m6tFDEJzA5joEZuuhX0uUDN4Q7O1HJDumU2s0XUbkU\ny+Eg9y0R5uAJqipgFGBAXVR0wFrAgd0SFf6MDj2zQtQe6RU4IwTFOK/lmWy9\nu2cANqyifWgSMosEWhHx86qsqBpOOv2+rk9oqk0+kAPGfPK7ml9AmSgTItv0\n0lS110syvSzHxjZNmh7lxRw9jl4vqU1Vwp1LoBd1c7B3y0JvJKeki953ki5S\nmEIwGuBjufJlHsZnxaTAldnG5UnTj8tqrS2rtz9l/nF9uiZqd9ERuqGqu5Cr\ncsn+hehlYlafNA+7Ma8CIccayMVpZ/68E64jOfB4OfOT6nu1V2XK64WSi3Fn\na4wvEGWH9MccKJDzkasRlZBPAI6cw2/Te4nT1D6/5HS8i3INyXK6wjIaB2Ph\nAAu0\r\n=hM1t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKS4Z+YXM61ymfOxRzbK7xO8d+ito5+1V3rV/6pjnPXQIhAIE4F1HQZI5xHxV9jomvdsabREnAHKy2iMP0nMkuyPoi"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.121_1630725667733_0.6757976574407609"},"_hasShrinkwrap":false},"1.2.0-rc.122":{"name":"@leanup/cli","version":"1.2.0-rc.122","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.10","@types/prettier":"2.3.2","typescript":"4.4.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.122","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-RDRJ1U9kXrjXH7CX2ohaDonpVG/vNZcZ2uwW4g4SwGzfQ97ymcxK5gmskYkyLi1g/epvpjVcdsg09iqlcuzQnw==","shasum":"5db60a39c8f73fc92280026915db2aad3d7da3fa","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.122.tgz","fileCount":63,"unpackedSize":138277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhNcSnCRA9TVsSAnZWagAAMgwP/3gjjyPl74Y7aAboOWEz\nLSIpLUdaXShZu4ZqSl3cs8pbz0xRAX0SWbwsH4iy0HBJZeDFJ00/+BwSsRPn\nkpqBbAj4rlS45opvCAaXzjxLtmIjiQOOFDvxj/MxoE/r5+Uae4fYNAOdZ3a2\nTzqTdu5Y1sdzrWTF97ce25511+R/UNlPqu7bWPLG3Gjp3jMXHQKj8n/0g9jK\nm8FWzHV1ng8Hzrukb0MrcrK4Yvqm+91BTAcEqTWYWsWgEIEKlOANI0PpMOhC\nClxcLkgiJ7t3Pt+jexZPIy4ih73i/fOyViREW39z+YG1hQ/rgBMcL/v4W5mq\nUNYl/qOnFdt1PT7G17esdQugjZSdH8L+wyJmHbEgKj3YiKC7WYOCTQczV607\nOKV2k3be9nPx/ywZtnqZG87TpDwuTsbJDQu0QXCuXZhlB71fvOlccdzsPy0g\nPf0eIIx5oHcW3C5seI+2xGRGaC3BTtHM51xHml0HGfxdeZuwvfFsHcaFWnQ8\n3cnymBDV8zbwbSTysYacUEtgOrom1q4zRpn76cTxgO8b7r1YwSCYllnWlW7L\nXs3xrzbAVdUacyLKheSv87DnW6n74YGIEMf2ylFUiSeBuh+Pndvsrjg8XoNK\nuKi9MdoXRDaxQn4g36+glzfTa2N0SfsV5Fz753IhZAw2re5VgPdIW4lfdNEM\n0GSi\r\n=BstW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH4nw8uG80Ljzyu8+t5wYJqebr2aF+UKKkHiBY68l18HAiEA9JycfcKCZp1NRQtgZXFnfk4yCeM6IaD5JUe21XVCaNk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.122_1630913703366_0.31282970848683656"},"_hasShrinkwrap":false},"1.2.0-rc.123":{"name":"@leanup/cli","version":"1.2.0-rc.123","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.1.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.13","@types/prettier":"2.3.2","typescript":"4.4.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.123","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-6O2+FWA1GrOW0xvv+nWDxU3myBrHShmbRN8iRKDsQnqSvUJeGrjeouUbZp1Ml6PYazBwwFCp7wxk+J1dYoWIjw==","shasum":"81a2940c7787c7390bdb605bc5cc8d00f89a3656","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.123.tgz","fileCount":63,"unpackedSize":138277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOQmgCRA9TVsSAnZWagAAf6QP/RNuqHplPkIWOqfDb+QS\nnRlWIFHSwBQjVCyXwkuudnETrADo2N2CctloFT51+aJg2+3hnAU23kw/beZA\nAX2TdyV/Il0S8y1pB4rv88QIMzzufdB0LbvVsF/vA7C7va8muuPYPwwdWQ4x\nkP6KLUAcMzMEzyuq5dPBtLLd3S9LqV16jNeadm5PzbffXIsn7OwcQCw/fESZ\nZxqVU+7HlWWEsSgZvzpPB8Zv6pnaA/X2baRPPbWwao3AIcmgaWlgW57RuRaS\noEXAR6CNG19DHsDBPsgvHtbDBzwUlAnxgyXylf+/eD1Uc+E4icZs1SPzGdqa\nH3i9AwAfcnfz29aYFtTwthqZEPEX12CFB+PJHr64DBooNEWtzHtaloE42Gsu\n2St7K7cf5jAQQH8rNvlrXNi+mDdFi4lq4eDR4jPB0on/houCXU3E6BMTxDe5\nJlz0+Keysxh3sRfj8/WuZv9Ai9kZZ/U8m205yi1Fd4tKwU7RRdvLOzisrc/D\nyZs5lsJ+xpdtBbVTbZyOmj65/ZRAB65KZaeimqB9tS+/VAZQhKWE1pOrndIj\nARk8zjtrX3WMIDMEaWOWXb6qKoAnmqCLO+/R3f2KQruGE3Z4UZxmRxjMM1iC\nw43gaVEs9GxTY4Bo/W420hAXqw0fzUYs5UfAFl4YLgjHIZPwgG0oPThWpsUX\nJojK\r\n=GOJg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBCs8TlMGjfhwOMlUny24Ji40RQAReIPkhp0EIhNi/+hAiBe6tm8aLQjLW7OiF1Dw7wWlrmu9JIOO0HBeyKdPO0YgQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.123_1631127968036_0.6720258544512074"},"_hasShrinkwrap":false},"1.1.34":{"name":"@leanup/cli","version":"1.1.34","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.3.2"},"devDependencies":{"@types/node":"16.7.13","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"_id":"@leanup/cli@1.1.34","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-HWARIBzVKyTxKYk3USP7AmeU1gdRcjAs7TF7nzWRyhQK6KcbpST/KNMyRyZtuN0G7HUcldChlxeTshIKtQC5Xg==","shasum":"6c4375713773f6100ccebea11fc986e246c85223","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.34.tgz","fileCount":74,"unpackedSize":148749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOQm2CRA9TVsSAnZWagAAhFEP/io9ceFRKcEv5ZlwN0dw\nQzPSjDCR0OvSSbeQ5Xk3vZx2ndiOVbm13iq/I6w7yS0gla18laI68X0kyc5g\nt7CunvWMYfMNsghCCHxvFHPiQeNHQ9Zh5ZejoIPRRK/Rt3nJ+CwtYRf2GJEr\nJJPkaMpCndKMBh4f2XK0L1aumev9enaFPAG2tk91eCBQIWW4rq+nK8ez7muj\nZUjAaz03W2AKpnLXSZbTFFRnSKBjLVvlW2b/g7+WAY9eBz5aXQ0Np2B4x8j2\nk+wOWCUqd491rlLbH4cKzYFsNOJUSjVxLcqSymp9r9Up5ULtcIgpGE77I19U\nvmp6ylM6UQQaa8DFHcqb34efBfrc1MJlnEKezvAVuMDHKMoDL82nT3OP84/N\nX0dRuOnfmG8qvhdb50zgPAw+wNXS9DOMkN4cSSNqbYd7/R9qQoh0LGrDxGxZ\nrKm8qbjyAMJu+Nsaki/YzFTBxVTK0VzABuH9QXItspaiZxto3VQNxpep6RQJ\n4jBhfAGz9RCQmbivKZzA5AztV/lxLRTbkmoHGC5Q6UyV2qTUAsL4RK3PKEUW\nyVZr3XqaVKxp4sE8sZ8QfjP3Q9w0IJCMYi9CBRs9qS+qZcQTksuiH+Lo/Q+5\niBl0Tfq3qKitbirEajPNrXRSNIn+jQPg2qksReWOM6r0skaUyxAbnDkIy4zK\nPA1M\r\n=TtyJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD97diP5nxaWoB6IGksHITXB9eAjfLzzVJaLhujUIdwiwIgXjnBYU/BMqRFQ1vDFl3wQfz7iA+eY5+jj0DYVh2bhLg="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.34_1631127990788_0.9487511171626395"},"_hasShrinkwrap":false},"1.0.143":{"name":"@leanup/cli","version":"1.0.143","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.5","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.15.4","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.4","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.143","@leanup/cli-core-format":"1.0.143","@leanup/cli-core-lint":"1.0.143","@leanup/cli-core-test":"1.0.143","autoprefixer":"10.3.4","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.6","postcss-loader":"4.3.0","prettier":"2.3.2","sass":"1.39.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.8.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.143","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0DhICtKisD+N5Vau02EclrvCDCWpqjbn30Ch1+t6zrm7Mjk08C8JRNhz5UeJfBJ0o7FLpTfMEjNJKAwDZb/XDQ==","shasum":"849cbf0b4b4d8622fa47be2f4548d9bffd8cc84a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.143.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOQy6CRA9TVsSAnZWagAAFlYP/AmXTPwYvlaiC3rJIe37\n2tK3zeX1GZo0rv8BxuMype4fNAVWB1wMeTN4F26CFZp+EgA9Lka/fPN1bZSB\ngJEF3MqxiuzCByUgKrr7rtPLSrBpZ2lgGkUiUB0msv4wjKw23CniECTzzSkp\nChTCrI0IaEYrX/mfZZflaZzwQ2vQrKWfmU9wXF8K6VYUWDQrd3ZXMonQ522U\n63XL7nc4J/nyXEFyPFkNQJa27+BnWPKc4p/j2LDqTa7K9s2G+iGUhbp0htaR\nUJ4ejtWnZ5Br6KlDlNhpgRwJg5YZ7pcQjoxtQvcbtIXBCJz0wMs5BueKAqbR\n39eAWDQMVEdI1/HNdjb99pwHRFkhR8xhqmXh2LH6uUJ/X77bN7TjLsQWcuLC\n3/De1eVMahZqJhHjWpUowhU3Yf41Bx7mW/ao67ghs4A+4+InwXyRo+iQqUW6\nVcG1ey+oe0WC2M3nr2ekp6E6v14TY0/h5Dl/8XLrXUFg0baLoxF4uLMsukmA\n5WhRqEBH2yEM4CjYlqbjY0yxUzr2qcfg3Kn46xY/h7mmqmBbgxPz29qagT+0\nZhjuA9IpEhBrPqkZLX0uA7VTzzrHxQTVHoow7sydYMxqd3Dq6kjNtxt8iSe3\n7nDSNAo9T70dIQJ5iz2nfSe7fPbeyS2GH0i8/M+/5fFDj/6kXxeNUgmrPvv+\ncKxc\r\n=ntZW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGY4fPkM3Shg+XRzotRv4q8WsBMToRSYTiYi5dJMf/2IAiEAhMrsiwAJ2YEIXixpkemP7G70Yv8hehuzIVNFJ+zmHU0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.143_1631128761904_0.4392422747706777"},"_hasShrinkwrap":false},"1.1.35":{"name":"@leanup/cli","version":"1.1.35","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.0"},"devDependencies":{"@types/node":"16.9.1","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"_id":"@leanup/cli@1.1.35","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-GVq8EfmNl51m0Q6XyORp8HcdTYH7UxwAIOrY/A+sS3ORhtXiHOMiJvwiQsLEDQaLTP7Q8mZIUchGDd7MVjyXoA==","shasum":"08728500d67c363c4af8a75cb00bdefac373f5b3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.35.tgz","fileCount":74,"unpackedSize":148748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQgTuCRA9TVsSAnZWagAA+AoQAITP+4bd+ajlCNdJTbMO\ngLXOQ6/eOqTw+/HoZnT4Qc7its5JdWs00iv5eGhoz88ivV4sF3cZjA5XiOFF\nCj5A2vxG+Fbe1UpmQiwQgEP2Rujosn8BUkTsYk/5QQ4SuBAFZVa6x42Muy3d\nlOyf9R6bEfiCctzahJ4P2E5q0gIJgPvw/DRVtNMg+zGGNZVsCSSIP7MMun9l\nPOrhO2uo8DkafaZQCrGtVUiI5DMk+hTA6W46hr60ynOEQDOJ+r9EhsdUGuM0\nAOUc1mpy3FOo4fgDYRAGqVqLXxxc2YTChOWG/HjxoN1AN9Ff/hzJ1+BUbAIc\nq38n6DzWa9Gupe7N5naKXkEF9RcZ51N64GCIhW4TdQZoiFFwFS2qEVly+79s\nLh/W83vrpUXnBFGnev7jIYuF5ppUNzMiy+43s4IIzlulQUYvfaRDn81Drp5O\nzpbfOMel4lnceHpoCVVX2iRxpiscPd4lvBtOW3IMUvm+9Om7PpOvN73i9JRb\nAkIuw5etq3cwLuF0cpOFS+qH7s6MT61Ees7qbtPTyxBqsSFfQv3jvvIrU/NM\n6gSEJYuAI7r8XWbJx6XtXENae0kDLFDfY54xXjF+FtkO1lreoSbWJ2bEZ8QW\nVOn2SHDeLVWn+WIQx5Vj6tN9eXteyYD47nIxL8vMc1HSWHB75N/7+uqHTtgw\nZChx\r\n=UeKQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA8pMlHMvC+ykvWrOJkpB6rjSuVZNeigeK0fmBBikeb0AiEAyARO8h1SuLQp3KqEn6QrSqf/wQqjeQ1ODq7p+cCku4c="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.35_1631716589920_0.871993918443057"},"_hasShrinkwrap":false},"1.0.144":{"name":"@leanup/cli","version":"1.0.144","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.5","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.15.4","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.6","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.144","@leanup/cli-core-format":"1.0.144","@leanup/cli-core-lint":"1.0.144","@leanup/cli-core-test":"1.0.144","autoprefixer":"10.3.4","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.6","postcss-loader":"4.3.0","prettier":"2.4.0","sass":"1.41.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.8.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.144","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-lDW+QOPKwqt4LxUMlM8empee1ctg/Jho/oA6IKu2878L1qtxKXZB57mHVtJPzrLE0J5snViXoKM1SubzzJz3GQ==","shasum":"3304ed87420e557524dcea1740450b4f52b762e5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.144.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQgUOCRA9TVsSAnZWagAAg/AP/3JXcuPuU0sT6w3lGhhC\nS5Ah6rhIXcjvlcuc7pGurCLEfP3TeSLS4/B6IphWGvU8y6dMCfB6/LhX+JRe\nWdUGQ/PtLO6pk2bkU/pzaYwqcGHeElaVxNr0URHBWNFW5+4EkamUAjwxE8ZU\nbAo4GFbrvk0f7f8k1B/9AgyniadXgElCl6EMnFl4JB7iWr7o/eeqHC+Km3BR\nztKao3Oqcsj9fRrOG8L2eFcbqIgW1+2ljGn4E2AUHXvGK6XX6Rkva1Pj4S5b\neoqcjULHnP/8CWk6JRlDKHoOqeezpHTO9Qxmtg8lYoTVLryTdBhJKBLIKN3W\nSvyuBPEf8shdCU+AUro3FthIlGeR1KbgmcBZXRHK5Mu82Na0RYzGDSHAAHK8\nKDErAOoaNJu9ZFExLTQkKZrJsr9PIqI/3Xp2WYW262+NXXe9CslzFp/5a8WT\nvm6sBqFbw10NEI43bwITK1fw9TbXopqlJWwLiGNYKUkLtnUAeJlTaO9fUeU4\nt29RdshOvNP16CerGAYgygtQaNuNmqT5NELdwpIq7pytL86Lw8/t4MJN4X8n\nSo3b9ufYW6quNF6KapgNF4mdkdE/dFYttQxKAzGpgcn5YwcK/wFs+ekDbwfG\n/vEv3Z4CmediRqsT16wcuEm70GTDg0KL73ngDTpmPLBzA0YJyYH+rUYEUAN3\nqQdn\r\n=RaLg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaH86KFbdAS5JufyjgZPB2GHA3B5Dc2m/hnpqx6nmKfwIhAOroVdJYWfL1YF3MJhj/V9mDcRfQCZornnCuM9DT0Dnr"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.144_1631716621997_0.07434908965475184"},"_hasShrinkwrap":false},"1.2.0-rc.124":{"name":"@leanup/cli","version":"1.2.0-rc.124","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.0"},"devDependencies":{"@types/node":"16.9.1","@types/prettier":"2.3.2","typescript":"4.4.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.0-rc.124","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-f5QG3EjIHalL9GDX4c+DFxWNmB2G1HebeANnKAs4ZM8pYUpwlY6FKg+qrBebIJo/t12TiFY0+gYH8AByGfjORg==","shasum":"eff127a545ff0f2a86c82d1f3d3552c16ae676da","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0-rc.124.tgz","fileCount":63,"unpackedSize":138276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ8pPCRA9TVsSAnZWagAABqAQAJTIBydsik0EKoAu/UeL\nh1v7c1gnjUot1kzrXqxMGsYSBTONte89DJzw2U36Ile3vzdGfJG8Szl2s63P\nBmdUNvKhB3/0Fe1N6bZwBAG6DwOfQ2ZI0TDTaviLv2BKIr6BJ5NH6bqGZ36b\nQdbJzAzRkr1V2gnAr2MKM4q3D+XXRcbsXczOiSrveYmKdI+GkVE+Wy7elOK1\nL+cDxQVIMId7Sna+1A/Rz5qNj5w/gocjQUSxF+8Iquqw2ogNKqux1jUJidJq\nhi0EDHjBzATZ9DPRRxDF4YJUqYvE4jSawI/hMPw40FA62gziywtFqUCUYWPd\nJwGr2vupLRrDUtnxePXkLYh1fM7ZjEK+R3Ragyy8RO+TSEpXEz90UdEz5VF2\nHeajQXr6S739VZtGs6yZ++5jRYMYLdsTLkkXTiLb6MhExCrJn48Mrg1H0ir6\nPW7YI7ue/1/EnLzSPveMOypn5ufcBwnKktRhHzW+Mf9KqCIyjUfi4M3jwl23\nAu+QPGaKeTe017TPxTI2emcoKZKFjmFm208txMMQCJKllMRiLu86MYFJgM3R\nBxj/WhDD35dXvo6bqQSppfv9mTNWZYgu87a6AB3JBwbOMr7aX3Wm4TZFG7b8\nK/YPPU9f8eFInuHjqQuJjZaNlkav9T7cyZSy25qk4fkxAoCOjmkLoBo8jLHQ\nHq1M\r\n=FBDE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiaptniFdDTCw43yL+CKyIK7glxYj7l4w2JP5yJ/dPnQIgKoMA9s68imz2XocluFx6Q+0zba9UsHhnvTsfNvVru3k="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0-rc.124_1631832654949_0.31208678017595903"},"_hasShrinkwrap":false},"1.2.0":{"name":"@leanup/cli","version":"1.2.0","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.9.2","@types/prettier":"2.3.2","typescript":"4.4.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.0","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0GeLRWFaWa3tZhkOjj8FjrxlpCepVsz7TMIsUzuEaX75XrZ3DMFPC9ZpDvAbLRL4K2mebbHy8x/sMRpKq/lDPQ==","shasum":"8601394ee28a6c6cded579539a06a7bc119379ab","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.0.tgz","fileCount":63,"unpackedSize":138213,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCupgAOMH/RfLD8G1jp60+2D9pp5IrBBio761WJYYwYHwIgB8/3kS0qQ8eKd7cdabpgRpMUZWgMXfUnQ6VmtqEbZ7k="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.0_1632020250540_0.17391094766833137"},"_hasShrinkwrap":false},"2.0.0-rc.0":{"name":"@leanup/cli","version":"2.0.0-rc.0","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.9.2","@types/prettier":"2.3.2","typescript":"4.4.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.0","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-+wEERWUuOhz45NJcqyG2sjdUV58f+tWdZEvUZ0KxBX7zr0xOgQD+WBYHmhR7etO/fVjjcBN7tfyuryzzuM/6Dw==","shasum":"82c7350a282da9754b1db14c0241147d0134c178","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.0.tgz","fileCount":63,"unpackedSize":138258,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSS7HB8H38dNp3mpr8i2K/3s8m/251q4nG9Lle7dF8VQIga0O6CQX+uQ1yQKhkPpH2/3m+XrLW0OlySTrJad05bZ0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.0_1632020750060_0.875844572410251"},"_hasShrinkwrap":false},"1.0.145":{"name":"@leanup/cli","version":"1.0.145","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.5","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.15.4","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.6","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.145","@leanup/cli-core-format":"1.0.145","@leanup/cli-core-lint":"1.0.145","@leanup/cli-core-test":"1.0.145","autoprefixer":"10.3.4","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.6","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.42.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.8.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.145","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-GN7MuPGBBlgfhvzRE+5iUdcFl99eKautf5RmdOrgdsk2Z/55+0IHLvj24JLZJFtrI1ImPUFiwLHoI1ZK4HXjhQ==","shasum":"472cb2b56eed4986c31b422e83b2c9299e48f8c7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.145.tgz","fileCount":64,"unpackedSize":152160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcN/zM84nBBPaWoPnbQCqtSBpaldWpM5GtweapQQxuXwIgZahHCClr/0wCxdiiXqxrToUMVApdjsxBKM8f73oxWgw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.145_1632300664188_0.31327824202677745"},"_hasShrinkwrap":false},"1.2.1":{"name":"@leanup/cli","version":"1.2.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.9.6","@types/prettier":"2.3.2","typescript":"4.4.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.1","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-wgf/p+7Nh/HyPGYB5TkShBBtNC2IcY/p6emGDtVc8HJo/ntFjYnLryvcQ5wlBRj/hJ5tLcu4CHSG94YAqdvnVQ==","shasum":"4d76b3357e184a6cbe5be0021d72753637ece2d3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.1.tgz","fileCount":63,"unpackedSize":138213,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDOfHF1rRNzA3coCxBvwo0EmAsNE/3xvduAF8KCjKX3PAiBXm3jbj/b2FgJncM9pOIaVOMDAkjZfEYJXn4pwRtQXQA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.1_1632300676758_0.04661016634621218"},"_hasShrinkwrap":false},"1.1.36":{"name":"@leanup/cli","version":"1.1.36","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.9.6","@types/prettier":"2.3.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.36","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-yUg+o9KuRGpsOsdTn32GZ0huCS9k85g1Ps/8jKEV++xubMbp1gZvNgSx51canI0f6GGJCeE2Rifhh2J0hePhNw==","shasum":"ecc1c869284e5d117826d72d9f97df23649484a4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.36.tgz","fileCount":74,"unpackedSize":148748,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQaXPxhloLg6Ba59hbbeOq8ldZhUj22hyRqf7YI/ucDwIgM3kj3LBxiZ4PVf8YxJk+AP5lSgNPmXHd3DnVtdrSoB8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.36_1632300691486_0.2665294160428038"},"_hasShrinkwrap":false},"2.0.0-rc.1":{"name":"@leanup/cli","version":"2.0.0-rc.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.9.6","@types/prettier":"2.3.2","typescript":"4.4.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.1","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-cenFrJ/I9t/d0rjdqsnCfMzY/fICQ35hgRjJo53vB88m/wZ5cLF866zyN6Xsf3WfuUMcOZpGxpZ1QwhybwhR5A==","shasum":"5caebbcd0d2d3ed3431f687139022eeb150b82cf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.1.tgz","fileCount":63,"unpackedSize":138258,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCevzEB9nVeK6oxSe5s+7vUX56Sd+udxrcaseeLw7ugegIhAKSQ1qrB9GhkI4jM7lngdYbGClPW79isJdtro7bs2Bq+"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.1_1632306358508_0.250635792497365"},"_hasShrinkwrap":false},"2.0.0-rc.2":{"name":"@leanup/cli","version":"2.0.0-rc.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.1","@types/prettier":"2.4.1","typescript":"4.4.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.2","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-BVACFU0qfOx1bfSQOJ3S/eaaazt3jL86x05s6M6+wK/2t68B6hErgVvx9N7uS9+uK4JXuz5sD5LnxjmReIJROQ==","shasum":"74e7f5cb7309442baa7cd9d1a1b89b59704ece3c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.2.tgz","fileCount":63,"unpackedSize":138282,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuInK9wd/9Vk0j0cutTsEWX0lyxGrw0ZtOUohICPhoMgIhAINNo/9EV7ot4obaDcq8DujbUGRAjnO+i9zHJ6Mkggu3"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.2_1632960271199_0.738953919722152"},"_hasShrinkwrap":false},"1.2.2":{"name":"@leanup/cli","version":"1.2.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.1","@types/prettier":"2.4.1","typescript":"4.4.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.2","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Ibnrg4Kx1Wu+zYcOYzAYZoY6CNo0QoKba4kO7WBqWa/oyXO7sAUVB46H2svLXshEsFql7TOHqM/FRZfIIxF1cw==","shasum":"44bd017184d674113c243591fa34d71c7bc5e95b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.2.tgz","fileCount":63,"unpackedSize":138214,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBmqUbeHUy09S9YgPSpaFlR93E6T/5zAblzmV99JLDhxAiEAx3olQIV2A57SU5oevXX8AmJCL5aKqgrgwTDqjl3Sbqk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.2_1632960305233_0.6857386515880208"},"_hasShrinkwrap":false},"1.1.37":{"name":"@leanup/cli","version":"1.1.37","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.1","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.37","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-hiEG/WY44vbi+OpZhoe3QOiIQvTYo7+EL+pvZwc7W8boz7Fbb6bEHS6iKkZ+2wwEedpzt/FTx3+enqo6OgKRBQ==","shasum":"4430093cd7418e8a9b162cfcf02194f9438d79d1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.37.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSZy9a1fcE4ZVbEFZW9/e6ta06PWhvdZCusjxOUL1TCAIgUpyInmvlGr6FL7FKAYHbK8q3TtbJ4lKoZHa7fkzaWSI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.37_1632960330617_0.7206049878379368"},"_hasShrinkwrap":false},"1.0.146":{"name":"@leanup/cli","version":"1.0.146","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.5","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.15.4","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.6","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.146","@leanup/cli-core-format":"1.0.145","@leanup/cli-core-lint":"1.0.146","@leanup/cli-core-test":"1.0.146","autoprefixer":"10.3.6","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.1","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.8","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.42.1","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.8.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.146","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-OWaspDuq/Dvp376DCPKASEiXFL6HwdcBNW5E8U+Z2NSd2uYlInAX539kHrvfjrZJ76dbNFRCdb75aXFsJWrwFw==","shasum":"9dcc28ace820a7803c51863c8e31722f9d1491a9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.146.tgz","fileCount":64,"unpackedSize":152160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpSWOg2oCRK2J3k9elu8Gq9jmKZgctD7vdtBLm7YmOBAIgfgJuH0QTIsnGN6y7B5+i4w9Mcp2M8sP07Z1s38LrX94="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.146_1632960398163_0.7849176780298717"},"_hasShrinkwrap":false},"1.1.38":{"name":"@leanup/cli","version":"1.1.38","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.3","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.38","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-nSUFx6aFDSFsvXQdlDBJ0Tb73CVfqJRktr3GONMIHz5avS4WjFBmBDj3ozSi86x+SAdKAlZT9781kFwO2Hedcw==","shasum":"66df14a0a1fad91b851a66fb9182796470fee035","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.38.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGloLX68uzZp1reka6dIFfPvPbGSCzBSagAf3w1lb4N+AiAyFZp3MxHx9MN4remw8ALB/2HHrynYsAiWb/gS0NrTrg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.38_1634058569326_0.7679712135222059"},"_hasShrinkwrap":false},"1.0.147":{"name":"@leanup/cli","version":"1.0.147","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.5","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.15.4","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.6","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.147","@leanup/cli-core-format":"1.0.145","@leanup/cli-core-lint":"1.0.147","@leanup/cli-core-test":"1.0.147","autoprefixer":"10.3.7","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.9","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.42.1","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.8.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.147","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-eMuPh1oZ3xg4qyruNCc71ez89+XdtxHoMuU9z+f4FYyWITInkVp6L3PfOmfd1RuGsF9tBJYNUUlUUadyEPvDAw==","shasum":"dba11137825f25e980f076126a9c5be823c3fece","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.147.tgz","fileCount":64,"unpackedSize":152160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAzXhrQKybFeHqYJIBJrPw/FHBgEi2b7Ndaohx2RaJugIgcW4uZqB+dZIgBmZGKbcuckCSC9WjNRXA2VLRkMrqgWQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.147_1634058757695_0.2978978003034427"},"_hasShrinkwrap":false},"2.0.0-rc.3":{"name":"@leanup/cli","version":"2.0.0-rc.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.3","@types/prettier":"2.4.1","typescript":"4.4.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.3","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-vzvz5n1MJ9UGhnlJmiC2uc/vDHrv0B6VwijGXOQKOwaCRh1ccnrXeWg/MGLPZzANxB2G/FEEkAZ+mJrur/Mtmg==","shasum":"1e6ad5485a033f071cd62d284047f5f913b1d60b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.3.tgz","fileCount":63,"unpackedSize":138282,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGDxaFAnHzkKafYdVFWg8pHrwhboRRAZ5U1hGXonhn1WAiBc1UPPUwK/2uqUrQtkUYCu2H1SGHm7r/yW12o3ZCH7JQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.3_1634062970677_0.35522936711833"},"_hasShrinkwrap":false},"1.2.3":{"name":"@leanup/cli","version":"1.2.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.3","@types/prettier":"2.4.1","typescript":"4.4.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.3","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-RixAW2djb4EbLR3sAdM3piPQBC2WrJKuc1i2G18q6GSVhg3D1Isxi09OebAXoZTXrUqYHxV2oaFiNvUcXBK3ew==","shasum":"637fed6ff43710aff2a985b9ff9444da1e0308ba","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.3.tgz","fileCount":63,"unpackedSize":138214,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD72BKe0l12Y5NtoBR7aamdKSGKPYn4Y8B8IxH5L5UT9wIhAK6Xd+3iaRdETyR3xwWPJ2YHPjnoRvnm5jJ9+vT0z/cV"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.3_1634062982272_0.12375063643597795"},"_hasShrinkwrap":false},"1.1.39":{"name":"@leanup/cli","version":"1.1.39","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.3","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.39","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-cGIM6bmpGBjquU3gIRMWa31DIYbF+IuPeYqwGuxcMZLdCem65QWzfXhhdqk5s/GLcoY603ai5fg5Gm/gIbTw1g==","shasum":"a8e682a5b0a7f47ffcefe2f6d8d3baa20b8b9926","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.39.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOXf3aqgMOtz7uPedbylo6fB+dKqxwRwiJDt+q327GXgIhAP/BIuMFjgy4CSWBknFRQDPRRti7NQjGsw9YVupUbl6N"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.39_1634062989438_0.3714902130258326"},"_hasShrinkwrap":false},"1.0.148":{"name":"@leanup/cli","version":"1.0.148","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.5","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.15.4","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.6","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.148","@leanup/cli-core-format":"1.0.148","@leanup/cli-core-lint":"1.0.148","@leanup/cli-core-test":"1.0.148","autoprefixer":"10.3.7","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.9","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.42.1","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.8.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.148","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-dvYNBipWy90Y8B0rn1ekfCVCOfJPO76SEvIJrjcTFnMqrVuhmvQoBKWyoAg3510ChWl5c7ItlSfxQxqJrqsBXQ==","shasum":"40f5d3d745d11d5df79dcddfd2570cd3b000c85e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.148.tgz","fileCount":64,"unpackedSize":152160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqFmGLuZQkinv0Ld3VUNakFP28H64g89+Ixd0W4WZpHgIhANxjHk6Etz4Ikb3GQulkS97F3wQ7Xq+UZPWJSkR2l7fT"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.148_1634066735971_0.3794054685731403"},"_hasShrinkwrap":false},"1.0.149":{"name":"@leanup/cli","version":"1.0.149","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.8","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.15.8","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.8","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.149","@leanup/cli-core-format":"1.0.149","@leanup/cli-core-lint":"1.0.149","@leanup/cli-core-test":"1.0.149","autoprefixer":"10.3.7","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.9","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.42.1","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.0","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.149","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-l+vTXO4jd12kSLlwN9RrpgXzuq9SDYU7kh5EIcJSWyJHwNUuIiXnS+npuifFzHB0GuIGkhO3sZoXC2Kvl0mvRQ==","shasum":"beeb8bf34bd6a15909ea64a7862b30e15596497e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.149.tgz","fileCount":64,"unpackedSize":152160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHiN9+h7x0+L70exM0RglmH5HpF2K2JgUA0eHWSVubXwIhAKLFzRF2ncHV6nH9aQ8V+G6FilXjq+RZ35anLdwJOi9Q"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.149_1634193526968_0.3308709798682292"},"_hasShrinkwrap":false},"2.0.0-rc.4":{"name":"@leanup/cli","version":"2.0.0-rc.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.4","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.4","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ctLqNG2XjFecPjmOlAXAryVBd3d5pMbGKgrLQiqMBKG09im7nMuCIsZK3uccFT54sQPjO2qwgHzXgi1W7XDWsA==","shasum":"6cfa3a18cad230672ba57a9d8b39cdce0df01d6f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.4.tgz","fileCount":63,"unpackedSize":138282,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQsGj/mK5LVpXHcdIjYGRetahjcyzenMPZft/Nnu9QKwIhALA5fyMEeoAT92EQx5hp+ck5qx+tddXmBSeyy7Y8M7EV"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.4_1634193544313_0.35099003970409237"},"_hasShrinkwrap":false},"1.1.40":{"name":"@leanup/cli","version":"1.1.40","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.4","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.40","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-/36sgw6EHIKEMxw4C/UyxkDpMFopooQTZC14VA2jbCE3D1jkbG1eZu0g/4HPWsGO2OfBSz85BIvTZ94JniElSQ==","shasum":"3c9077ddf15c2ffc801986686fa23dfdc4148774","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.40.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD/eYwnM1Hep4FBRKNoWj9qFojdb6d5/1kd1O8E37pKQQIgWTL8pulZK85cdzcirwMJnSwQB44PMVCIyNVO1Syqb/Q="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.40_1634193551612_0.7654623260655775"},"_hasShrinkwrap":false},"1.2.4":{"name":"@leanup/cli","version":"1.2.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.10.4","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.4","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0t0EWi4B8/1to1fw4L8MwzopsbwJ3uqTPbgGn3e+QNja5L/+pxPOQA+PsEJRinyZuWS+Zt+GIzcnaG3m1uD6ew==","shasum":"c8868a9056664d8183e8e39616fa158c0ac0c859","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.4.tgz","fileCount":63,"unpackedSize":138214,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmFzLu7y2MQZmU7NQFnjh1ng1O3lxQutru3hZRlCF0OQIgTKgl3fj0X3SGqXDkMt/TCh6MZEPtWiSng2eCcH9f5MU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.4_1634193581025_0.43794296638246566"},"_hasShrinkwrap":false},"2.0.0-rc.5":{"name":"@leanup/cli","version":"2.0.0-rc.5","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.1","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.5","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-5+RcqWJWRLc+F0PJ5fOM5eWrtCR2tvvVBUszRRk7xJ4ppoYMSjepBVhDp4YlKIGLyH5m95eajjRKxXeF6tGinw==","shasum":"d134b002920faf3ecaa52d455f811777671b6d6b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.5.tgz","fileCount":63,"unpackedSize":138282,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAO8XPcNHEoWYNBUoBzb6/8wmKu9xj92iTYwbaRZ3/DOAiEAmi9HafcvWzm3y2Uec6BswEXv8mAIj3x4pOACvAYajXM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.5_1634496765247_0.7480363640458398"},"_hasShrinkwrap":false},"1.0.150":{"name":"@leanup/cli","version":"1.0.150","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.8","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.15.8","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.8","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.150","@leanup/cli-core-format":"1.0.149","@leanup/cli-core-lint":"1.0.149","@leanup/cli-core-test":"1.0.150","autoprefixer":"10.3.7","babel-loader":"8.2.2","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.9","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.43.2","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.150","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xn3qbb3L3QjIwDMU2biX61mGDebkHPEyPr2qKPgehgIAvPWJbh4nTZJ5cTejlEy2A6c6J8UH7OcRXnyPKuua5w==","shasum":"e870b3f94f5cd9f5d1aa7075a11c886779753624","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.150.tgz","fileCount":64,"unpackedSize":152160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGav4V04MjvepIO5ZCgI7J/FQoLeohh/BjXvE+SIfPk3AiEAm5D1o+lMMtWWweeP1DRSZNKTwCcO9G73M7vxkCP2jwE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.150_1635056915182_0.34851825316802554"},"_hasShrinkwrap":false},"1.2.5":{"name":"@leanup/cli","version":"1.2.5","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.1","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.5","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-052NHrNZ3Rp8qpwEPw84CBJbTF0lUOHyh/cZ3V0anvBoUuxk65zCrbXvl2Vkj/qdjhl3k/5avEHQzh5jSTFwvA==","shasum":"ff7f6a50aa6ac575b6ad36ba845180fe2255be43","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.5.tgz","fileCount":63,"unpackedSize":138214,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRHmX7Xqo90YR9L+YMNcLffk7fHHvwtm810/lVQs2igQIgYTSA+jUP4mqMNIuDSEqIbgMSnhgDH9I1AmPVbmVmENU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.5_1635056963189_0.05737721377934091"},"_hasShrinkwrap":false},"2.0.0-rc.6":{"name":"@leanup/cli","version":"2.0.0-rc.6","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.1","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.6","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-LKxt5cUVE6qX6Y+M1mUgYsdCF5rsN3IzHn63azQ/GvfLa/en70l3gQQjygNlUaJln3hJcxK2xELmd1PqdRhB5A==","shasum":"e26deade6736d5bcfcde30c50be9c31db005b5ea","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.6.tgz","fileCount":63,"unpackedSize":138282,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHyzLIon/K8JDWfSnsMl9wqpImd4PpODjkWnxqcA7yN6AiAVbD2jek6Smtcuyjvw5PoAEoKM3pAtDfqBUBjf9xKF+Q=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.6_1635057179069_0.5450391129166299"},"_hasShrinkwrap":false},"1.1.41":{"name":"@leanup/cli","version":"1.1.41","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.1","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.41","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xnDaYR+vrgnwfSCYpvnFmIVAysUiFfPMTc93OPHv+UORUoUUBovZ3yJ9hs1+i1qXcVPnckz7ASbW9CkH8RfLLA==","shasum":"203073bca779036d5cd4ab0260758d22d12dbe7e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.41.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIFq4d6vFdWxbalczFSHVb1pgrc7ODQxNlhKKtx30wZEIAh8wHqYsx+8oftXNg6pOH91QX9zLOgQw0dqwJO9bZ7Yj"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.41_1635057755223_0.5678503251629816"},"_hasShrinkwrap":false},"2.0.0-rc.7":{"name":"@leanup/cli","version":"2.0.0-rc.7","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.4","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.7","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-W6+4ccEtUA6dBQugrMdoq2EX9rBMzI+/2JgsxiiT1HTIrFPfHgZk7qJk00ukXBvTOplelxlRIYVCJH6INuUmaw==","shasum":"b286fc2d4d1675d65327dc26c0bc73bc0d10e400","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.7.tgz","fileCount":63,"unpackedSize":138377,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDX5Uhra+m9BD3JpeyOWJiH1GufVN+dW0nU14e/FvzsaQIhAP1clBARPi2RYEaLOkyR9TbIuQH3SZA52IokVVvcSReJ"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.7_1635140127602_0.5676389501559123"},"_hasShrinkwrap":false},"2.0.0-rc.8":{"name":"@leanup/cli","version":"2.0.0-rc.8","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.8","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-LhjEnoqtOf770FPwlLx1Q1aHSvby7rskVwYZ7tNF5YE5Z9NRKcSIRuAPocK8r9oqMiOwiVwtKo84Runjb+kSAg==","shasum":"329a198878f7665d8be4d01a21138a844e1c1484","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.8.tgz","fileCount":63,"unpackedSize":138354,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBvx7gvNyiwO45npLLFkExI0vP/HKf4k56HD4M8AkqQxAiBhPXbOpM4inuInkOnF7fjAZ0y2efbhBOdnfTTmrjyDvw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.8_1635332948544_0.4153491864981649"},"_hasShrinkwrap":false},"1.1.42":{"name":"@leanup/cli","version":"1.1.42","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.42","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-JmcPDpsBdqfSXpRjmRe0hrn0TFPSWalmGwZAv65NJ1rlRnZ4odFpXrnepBOaU11O4Kbn2WRRYOdd2FXkgicBrg==","shasum":"38652313b76a83c40d014cc4beb6c44ac15c190b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.42.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCd5qm2viQO1pThqrpI0NcwB361jxE5VdjpjMGnQ01FdQIhAL/1bHdZbwAyLl7mDU5nc+SSzQ4pKjxUF0nWRYuffP2f"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.42_1635332978259_0.6543042487569426"},"_hasShrinkwrap":false},"1.2.6":{"name":"@leanup/cli","version":"1.2.6","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.6","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Jdf8GVcKuIYAUY+HiHJFJb0ffLBAo5F1ra2hZfMaf/6uvsp8l2zlPEGzNgx+7g3ZzMUeiazLixlmwILSk6Z3JA==","shasum":"ac8fb24eab75bc2b94945982351de7396e768f17","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.6.tgz","fileCount":63,"unpackedSize":138309,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu6LneF72zTNOwHc1LIsNgp5+uybkJEhPXcmdhkRJZ0QIhAMnFr7is661DPD5+xjo6Wj6u14gSlWBGxh2zchxbG5JZ"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.6_1635335649866_0.45155547583582"},"_hasShrinkwrap":false},"1.0.151":{"name":"@leanup/cli","version":"1.0.151","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.15.8","@babel/plugin-proposal-class-properties":"7.14.5","@babel/plugin-proposal-decorators":"7.15.8","@babel/plugin-proposal-optional-chaining":"7.14.5","@babel/preset-env":"7.15.8","@babel/preset-typescript":"7.15.0","@leanup/cli-core-e2e":"1.0.151","@leanup/cli-core-format":"1.0.149","@leanup/cli-core-lint":"1.0.151","@leanup/cli-core-test":"1.0.151","autoprefixer":"10.3.7","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.11","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.43.4","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.151","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-BymthvCXcPDG14K3bmnJ3VHh9nGm1pxaZLzjZcDBCAmps7vPmZmnUzWXOzzCAARnXV7ElhVRaM8n3J2YjkTaEg==","shasum":"bc63201d08f2e47b10608fe03f5d3323b38567b0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.151.tgz","fileCount":64,"unpackedSize":152161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBUWZGM2svGFhCVQGA7FHwwEtYc+SM9QPxQPVyjEByI8AiA2LfP6DGGd7FOtdNLgnnTrAmUFA1xYcmj1s+ESSF2tJw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.151_1635335723244_0.8404218417844187"},"_hasShrinkwrap":false},"2.0.0-rc.9":{"name":"@leanup/cli","version":"2.0.0-rc.9","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.9","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-eLNgSacmQvbXEi1Bj8kUTNlGV8vbkc4GVLA5BrWAxsUmMy/seFLrhyitvfDx9V5AQDMjJc87L9pAu1nKV2z3XA==","shasum":"c4b30f199ca4ffb3b4c294a56e4025f524a70981","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.9.tgz","fileCount":63,"unpackedSize":138354,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGVhYR0GCk59vyFshS8Ll1ZzmLvcqZmcNqQeW+MPMakAIhAIfuFyHuYrwfE5IKz1nlb54UfwW8vgkTpiI6fKknkJAs"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.9_1635398498568_0.5542210720967999"},"_hasShrinkwrap":false},"2.0.0-rc.10":{"name":"@leanup/cli","version":"2.0.0-rc.10","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.10","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-qdVzYc6zVJAS+czBSOCPjiv9EY6NJG0EwTYL8DpgAFs1QAmYlvpNC0o37DBK47vcUGoIPMMA9sPzYSbWxakWCw==","shasum":"f7d7494473ae7286258515478643d4e456af3c69","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.10.tgz","fileCount":63,"unpackedSize":138361,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQ/ALtecZ21q6s8/5wGipul6tqc5pTx4EXCx/50rqBeQIhAORAG1noaIFmt0kGDypHwEFHs+zDoBmvUT7qHWUKIjq4"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.10_1635483928805_0.874836929111181"},"_hasShrinkwrap":false},"2.0.0-rc.11":{"name":"@leanup/cli","version":"2.0.0-rc.11","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.11","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-8uQXOiQ3yrpU3/3rKenW440wQRdnd3PKMOBtO9f4W1OPx2S4ttdCzeFHo7aNenlmcEpDIXt5ZY4VIeSkxjtp+A==","shasum":"f4e09c1ffa2ed1e6986f62ae8b2167c0e4281c15","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.11.tgz","fileCount":63,"unpackedSize":138363,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHWKPGhKe+9YZO+QDCGAn5DYmLoUpqXEei9ZU0Oata4wAiEAzx4LYgBMYJhm3MvuCOB0Js6rfyn27QKxnUfoNAOTqx0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.11_1635499447088_0.8854558838833932"},"_hasShrinkwrap":false},"2.0.0-rc.12":{"name":"@leanup/cli","version":"2.0.0-rc.12","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.12","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-odyNOON6WYxly9UNqpwIUaV9m1uq7dPaX8kKrpZHue9YMuBx45sX0HcO53JuKU/6vtXzn/V3w32LFP/qpqDQWg==","shasum":"6d0873ac69f63870c17b405b502acbd8d4db177d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.12.tgz","fileCount":63,"unpackedSize":139572,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4EOx6rCzHx+XyN5z2JrhdX04iyi8+z4hh0C1faUVWUAIgAef+2W0IuRCMGButbeRky/iZZBf7P8A9bGzF4sImTkk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.12_1635561192344_0.8492088972956462"},"_hasShrinkwrap":false},"2.0.0-rc.16":{"name":"@leanup/cli","version":"2.0.0-rc.16","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.16","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-TFhhToKEjbyN7yGRCYUtZCSSYxXIJaPEosPJaCLBHMMPq8b261xRADEHT+J9sMNMdpCB62cMjCVlhtU5fzkocA==","shasum":"ec1f54cbefcb82a9b64167f2f53f0912390ef240","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.16.tgz","fileCount":63,"unpackedSize":139820,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCB9VoL+Iq7w9mAp9CY7SLZwkhBA40ODh/af5jVTNVYQAIhAISlM10wIrCigi9dyhS3gKjfnHSVSo+fYOr2wSn8IWqE"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.16_1635914247492_0.6022228036630832"},"_hasShrinkwrap":false},"1.0.152":{"name":"@leanup/cli","version":"1.0.152","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.0","@babel/plugin-proposal-class-properties":"7.16.0","@babel/plugin-proposal-decorators":"7.16.0","@babel/plugin-proposal-optional-chaining":"7.16.0","@babel/preset-env":"7.16.0","@babel/preset-typescript":"7.16.0","@leanup/cli-core-e2e":"1.0.152","@leanup/cli-core-format":"1.0.152","@leanup/cli-core-lint":"1.0.152","@leanup/cli-core-test":"1.0.152","autoprefixer":"10.4.0","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.11","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.43.4","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.152","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-fj7xMRa5sXpleQjFg8At+nlDzXnJifzSfhFA5JvMJEsM9b6KBHq0SvlT4ZiwTBXXOI6Zuh3BhDdkIHexTEHrjg==","shasum":"5cc2cac96e06ed14e39638ff4966cbd5c67286e5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.152.tgz","fileCount":64,"unpackedSize":152161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/ZF9qK18cPdysJe9pFiA8NmnIzUVqUQgle6mjzvn7aAiEAmshTqg5gyhK0ObZtlb9K0yX2zVs8r5PWfk82AHr3VaE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.152_1635914254618_0.9176759276372815"},"_hasShrinkwrap":false},"1.2.7":{"name":"@leanup/cli","version":"1.2.7","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.7","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0WqVyUc1nE++ocEMqZ9QOx9ksqt0Zn+Gb3gmujXfJKu1MYww/fkNOrQsrE8eHOWduwZBHoCLF9lFhA5HK320iA==","shasum":"2374c465e538138548f869720b0728d972db219a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.7.tgz","fileCount":63,"unpackedSize":138309,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwYhzFc6o57PZfDuzg06YO9AiO9zMZzvJDMlmL8xvFgwIhAPEGave9DABCq0SK0gYaf2CUIB8prYD7qAYYGB5z7L4n"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.7_1635914392557_0.7140845448903332"},"_hasShrinkwrap":false},"1.1.43":{"name":"@leanup/cli","version":"1.1.43","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.43","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-euKv/rqqC9lhQdNViR4rxb8Io9LVblF7zGoVe0JVoCTYpMppae6goaD8IF0nPy7PqW+XPPwSeHdUZdtixqJxHw==","shasum":"4e70e4813e8a0e822caf509799fbc593606ffcc3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.43.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEpmLF8bViioov1+IDulJLDLAnNrcPpmIwErD4//T6CAIgXtBAPyS0UEYE7bU3w6NjET9J5v7YBXXGlfopteBZykc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.43_1635921492249_0.3591828825916179"},"_hasShrinkwrap":false},"1.2.8":{"name":"@leanup/cli","version":"1.2.8","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.8","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-HPzTy3wIdQCP3FGlxMfUzRRu+aZ7OnnVzYhXWM2rn8c1IcIjJYx5s/VaUPSCXmEF5QPPWTlc8qCKhaJXKIPMPg==","shasum":"a8ebae8b31fd9d0336e128c67a20384c26d02923","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.8.tgz","fileCount":63,"unpackedSize":138309,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGpL7blVm1dRx01s39CDb5hS/8WbPwRt9qfPk1j+7zduAiEA70568BLJHcWl6PdFCeP8YLeT33RdWYvrgrkxdC+wgtc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.8_1635954431786_0.27342224150702554"},"_hasShrinkwrap":false},"1.0.153":{"name":"@leanup/cli","version":"1.0.153","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.0","@babel/plugin-proposal-class-properties":"7.16.0","@babel/plugin-proposal-decorators":"7.16.0","@babel/plugin-proposal-optional-chaining":"7.16.0","@babel/preset-env":"7.16.0","@babel/preset-typescript":"7.16.0","@leanup/cli-core-e2e":"1.0.152","@leanup/cli-core-format":"1.0.152","@leanup/cli-core-lint":"1.0.153","@leanup/cli-core-test":"1.0.153","autoprefixer":"10.4.0","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.11","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.43.4","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.2"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.153","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-EaCDv6ufLDPiWvvAw6ZVYvc6HYMMXiFzrO0KXIKKQwU4f349a7xeHOy3GBoGkcdvWTFvdvVV2LhhgA3/xJKofA==","shasum":"c4410b16764aff93e29e438812810423bea9eafb","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.153.tgz","fileCount":64,"unpackedSize":152161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpVO4S35kU5uXjzF7r0vxP5PIE4j4oDkMjpIQNnB904AiEAtR/J0CIY/d/hCO9LRhTdPJZK4SFJB+U7y6rMiDWRNRo="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.153_1635954442829_0.8930885152776988"},"_hasShrinkwrap":false},"2.0.0-rc.17":{"name":"@leanup/cli","version":"2.0.0-rc.17","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.17","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-f0EXNEhtxuP69fG66jBowo/ySxSSfP5ASAeBGGiN8XJZCOJsG7KFZIM0Z+q5GlnadoHR8wJyEHe33sQ0yi04pQ==","shasum":"1441ed7201d606b43a5f0ce98260060bfb6111ae","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.17.tgz","fileCount":63,"unpackedSize":139820,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/qo2s9i6jZHJkS3/GSZf9EHTN9MJfMjVvp/W0mv5YhAiEApautiI674tCyNwtsFrD9w8Htfc/nhnyuflrFEjFEE7A="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.17_1635954460898_0.185447324849916"},"_hasShrinkwrap":false},"1.1.44":{"name":"@leanup/cli","version":"1.1.44","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.44","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-3t2HxPKy4Y6BtCLXb1bErwgLgt/wqh3VeAP1ORjWkDsz+hNkdKwHt/7Cj0Kia0W9bxzOvrU61mA3dQ9vLgdsmg==","shasum":"d8bcc0795a89454492c6cce271852531762c6fa3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.44.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXjk5Fe9jtLai8RNfPA30Y4TPS+JtVeGTNh7RV30e+VAIgcLUMsVUN9jRxzfX/Bomc85/ynynihHdLWnjHfqgtogg="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.44_1635954477966_0.1863583139414675"},"_hasShrinkwrap":false},"1.1.45":{"name":"@leanup/cli","version":"1.1.45","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.45","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Z2mKwPy1aaMKVMakaVq2bZFDop//EWBPRPJEjW6Arq+ewSji2Wa3WYXA/6OTMjMBpdZLNN+HsFWJb6ayMEaq9Q==","shasum":"0054b4b7bc07b516677fb092f4d6334af6c20316","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.45.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBLBy5ZL2XAkZby0zOaEa8kpC1Im6C932OlMx7UVbx4lAiEAz9uUxGoV2h+J/cQrPMk7dZ5+1Un03bWpMa6/YxklY4w="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.45_1636092049293_0.6886357609672764"},"_hasShrinkwrap":false},"1.1.46":{"name":"@leanup/cli","version":"1.1.46","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.46","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-p0gAJ0nP+jZ6jwllv36M4ookCMP2vp3tMyJfajqf3GTUTM8cUzTfE4c5kKPIQDI0BjEEJoJRqRJj+nKngFLnFg==","shasum":"bc97237e5aca1f6a0c4c0451797b69f92620d0d2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.46.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnh3XfAuwBL25Bf/N/dqcSAhVSqiZIBlUPB5ozZoHrmQIhALQEgNf3FeB4vBP8hskjCSqY8xdVs4sml/YZQdVN6HdY"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.46_1636303837713_0.9438446336910744"},"_hasShrinkwrap":false},"2.0.0-rc.18":{"name":"@leanup/cli","version":"2.0.0-rc.18","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.18","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-/XVbz+4GqQkGB3b1cemMt1i/S9stiGgquffFJgO6Nenml9DjMT1wDEd+Ujip2Ogy89nB5UJAr1dO/TetJl/o2Q==","shasum":"3161fc8def503406a797e979c1942c044f79f2ee","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.18.tgz","fileCount":63,"unpackedSize":139820,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHW1Cuwltc33SD5IW7Hd+kMs7gtZC2yZTp/WFdhEDJzaAiAaIB8tIdivEWCqzr7vPiJMwV3zIP94icpH4Nw7AYKBNA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.18_1636303922228_0.9053795047260702"},"_hasShrinkwrap":false},"2.0.0-rc.20":{"name":"@leanup/cli","version":"2.0.0-rc.20","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.6","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.20","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-dJttefIo66d01vnBJUfDj6JFqkbH6r6HHJ+XuipaQZqOoCaFNsu14C7jpumLIUEHLmx8ZxGHADEYXFJdXkWgRQ==","shasum":"d5b0f4a4a6bb1a55b2ee7bea6ce901f93035ac5b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.20.tgz","fileCount":63,"unpackedSize":139820,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHjVM0di0dOcWPeuvA1c58wHjcGJBYyoRtFLM0I7fq/uAiEAsnhc4RklfliObxf2hcu00mBqc7eok/NdHXZ5BhTTLvU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.20_1636347717600_0.46860203143156354"},"_hasShrinkwrap":false},"2.0.0-rc.21":{"name":"@leanup/cli","version":"2.0.0-rc.21","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.21","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-DPABrTCeOMv+r/be612QHwoCH2ZJKmIErXNdemmyzLGedSkuuhjNPEIw/OM5cWw5jD+T3QzAUOZ51lSoRoBamw==","shasum":"6bbbc4ba5ae608b94fe64282e2d1161bc355cda0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.21.tgz","fileCount":63,"unpackedSize":139820,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDkcWJyO+hRUMeVnrq3XEut909kcA9Ne92D+/JzrMnS1AiEA/aT8woUVAZZV4IyU/9adSRrS85avq/qWgKP12S67+NA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.21_1636495565739_0.935379251017959"},"_hasShrinkwrap":false},"1.2.9":{"name":"@leanup/cli","version":"1.2.9","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.9","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-uJ/FjJs7N6qYNiWF0atmFx1z/RnrBwRlsbTkWqne1QFVqSUXKH2UWjNTWZzF4+p2bXSK/pQAMwzt0KsZJ7bXqg==","shasum":"0caf3c1e939dbb89babaad12aab012cb0a46dda0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.9.tgz","fileCount":63,"unpackedSize":139766,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzIQ4gVSvGUwU4vK97vAFYxo8/2t53AR2V6JB+cngBlwIgVtSFzEJsUba06lXOtRCsRgwOu3QvuRipCodxCU+UrhU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.9_1636501603749_0.2795354444744671"},"_hasShrinkwrap":false},"2.0.0-rc.22":{"name":"@leanup/cli","version":"2.0.0-rc.22","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.22","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-MS/RihcEuV1XecGFVHWoLufzKjJ3/dIec+mhVpeWVTp4tmwjhw2LE+Km42XKkp9+hTxBMwOhJt3fpk0latFUEg==","shasum":"65339da96b0f549f232377fad555bdc3d0c84649","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.22.tgz","fileCount":63,"unpackedSize":139820,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIANxnayfGJTAFuLyx4Kr5wiTiluS1Xp4hO39yPTDm5knAiAMbFPg2ifKmHn2rZIjOx40NRArGI1OlFRbD01yzR8SKw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.22_1636521049742_0.6872651023042493"},"_hasShrinkwrap":false},"1.0.154":{"name":"@leanup/cli","version":"1.0.154","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.0","@babel/plugin-proposal-class-properties":"7.16.0","@babel/plugin-proposal-decorators":"7.16.0","@babel/plugin-proposal-optional-chaining":"7.16.0","@babel/preset-env":"7.16.0","@babel/preset-typescript":"7.16.0","@leanup/cli-core-e2e":"1.0.154","@leanup/cli-core-format":"1.0.152","@leanup/cli-core-lint":"1.0.154","@leanup/cli-core-test":"1.0.154","autoprefixer":"10.4.0","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.11","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.43.4","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.154","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-C45+EOj5mNn304wnK3if5JH0jBt8yDHHb1n9GvJ37ZM0qYYWVPuSkOsRDW/39yWtU4C60vfYoxZBqKVSYw+IVg==","shasum":"789e518cd21ec4b11d0e4d2e396a910957a1040a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.154.tgz","fileCount":64,"unpackedSize":152161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQdhTUR1F8335mNK1si1td6fcHOn0bJc/3+VLjrnRJFwIhAKsgGJQc1Y+9pCV6zQWvHJonBBAUBNjE2eZ+qqe2vqET"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.154_1636521648569_0.8708541624945438"},"_hasShrinkwrap":false},"1.1.47":{"name":"@leanup/cli","version":"1.1.47","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.47","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xHUlYDBXPfgOVhFIITBMFR4E9n+VLTK/cAJnPzQGbNUcKIK/VdYHFShTYJh/Wyg3L0QpRpMhlJ9n7he5Cn+/zw==","shasum":"81a8ad3741cc16f1e86e077f14571c0f96be0279","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.47.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCI51zEaUYRvdzX46Ix3ETPPcIWHFS2+ij8KHGdbCOW5wIhAIvdZMA3VUSrzJUvxOxjlao1eIbDvCXKv4IGzLMAiSD2"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.47_1636522410842_0.13959376478250785"},"_hasShrinkwrap":false},"1.2.10":{"name":"@leanup/cli","version":"1.2.10","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <17","npm":">=6 <8"},"_id":"@leanup/cli@1.2.10","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-SgMaTKJn2hEHvmyQ6WsMRUefO32JvTzNfu5emZZ1OgV9nGGCrcTUhXUMX0fO3SqfOxvb7E3qogk9yKr47/jwsA==","shasum":"249dc4dde7b0b397e8735b3abe99bf5c588903e4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.10.tgz","fileCount":63,"unpackedSize":139774,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG/R3IDooAs7QQHytOoHAf+TQcqjyyGHwO5LipyufD5hAiEAvJBPycIe2HtROKpD+i8/xn6n6/9xK53eMF4OulHQ2b0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.10_1636527162099_0.5627575336009025"},"_hasShrinkwrap":false},"2.0.0-rc.24":{"name":"@leanup/cli","version":"2.0.0-rc.24","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.24","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-LqUitl8oY1BD/AeXxooIFV0IUFbSZ9eR29fq/NvDCMBGV4H3qToZmK4kqYW/Rzfu0B9ObsW+aXenz2+3iu9ozQ==","shasum":"f01c22dbebd599a79cc0c1c27637a0a6d05bb509","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.24.tgz","fileCount":63,"unpackedSize":139846,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICaf7UyOkN/nB+toV02hiA/pJI3YPXlineYi4CuCLUFFAiB8zKTdUWPeMpmhBqcK2vRQikBgBMycNuRPEtbLOxesPA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.24_1636660405887_0.050167597945161235"},"_hasShrinkwrap":false},"1.2.12":{"name":"@leanup/cli","version":"1.2.12","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.12","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-vOJ+Wzrr4mnGeSn0rqjP6+16Fw6ynUdpOd9YiNWGckSE58RKTer8r6TAO/ZZXj0EpGL05aqtIit/3P+UvacoZw==","shasum":"057707c4b6cd193d9d22278d3a2b1f7b1c9d8bd3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.12.tgz","fileCount":63,"unpackedSize":139800,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAZzd4kcNhamOwcq09lpD6bZ4O1sXFl02ZUtlvZZB7mAiA8SSSgxDHcYwd6JOXNgbKpEQphfxRRBxErDsw7GbxzGA=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.12_1636661081137_0.2763845743630473"},"_hasShrinkwrap":false},"1.2.13":{"name":"@leanup/cli","version":"1.2.13","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.13","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-MnKOS6yE/6tWREALqhB/dtTYv6jvi0xFCa3tPANe7pr6Sk98aL3pcYMdUeXsqdLv3JRjK3pqnqJ6SqoZo/H0wQ==","shasum":"5634fbe41bc84026187ef52cca7dc443b5ae7697","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.13.tgz","fileCount":63,"unpackedSize":139801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlHZ8CRA9TVsSAnZWagAA3UMP/iU2IJ+yLht+YZmchvFd\nQAumh/eOQsVvyOr0dYVX8dNXAim7DI1Vo2lkLt3GBv6WtaRvYZHM21qK89OU\nD20iIwoQ6ZcbfettymRmcOyCvc45/0/NGvUTdT4fF7cZnc4aoo3TkFragWUF\nUP0RCtIlUWPquvF6GCQzCbMln2/80TIqgod/1YS1sS98rfDJb9S0GRLvnWCA\nDLMhrvjJkCxN6PuXd4wZ9FvJztN9IzCvoAY8eP+OO2wfSRRImIQXheQBkfVG\nMKGg3crlVw17lNo8hUNZajH/0HEHoRKMfTvNx+YX0mYKR7EkUpXu0acf4iur\nNqbbt1fSmdgilA5HeFDKd2JaUAcLYnZMDUAKY69rHhEzjiMAU42ebJDqvYca\nRBdN+gu3H/wLCBMwmp72RDe1tGH7kRKmAHP63xoBg+giqzwm7MkZzNxOV067\nYstEV60PujPxQqBIk5FMLt0WfaJS2CeMsc8J+wTkWpsJf2lqljS2qsDlTL71\n2cCg8+4Nn4tW0DsoDjjCsKehfB7vGEd11y/LFkrL2tDg2fX0ibhQH4zxazeM\nonUxnjGl6dwFR/z+PdtLUxXzo6fpSSC0Nc5vsOUZ1K7VYUHbcXFJv1pYpY/o\n/ltPGjS26u65Mtox3fLvStTH/7Z5aSPEwGP6nyEJaUWL5j/Qpper2uPV4a9j\nkHy3\r\n=xb80\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF1z7TAK8HWt7QxrQqHnaQTGR0dguay/GOqzDhcLRcGEAiAEgxvXOZ/B+mt4xAiYXcI413l0nG66AIo4mpRQDXlOMg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.13_1637119612030_0.8794224894273677"},"_hasShrinkwrap":false},"1.1.48":{"name":"@leanup/cli","version":"1.1.48","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.48","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Nz5SOHMFYwSfljQE9kXFk5aE/qhh5/5mI7CimwoHhAApdrqoIX1K1kaMEpMnmYdmz42uOjW+MdriQsx5Bk8BRQ==","shasum":"ba048bc6135b106308d1b39d8fb56ae94b1505a9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.48.tgz","fileCount":74,"unpackedSize":148749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlKgkCRA9TVsSAnZWagAAkTsP/0/sMGz2PzGpFUziJf+D\nhfq1fwwV6LPiTxv3RbMKxuLT11adAOCC19PghYiafJ3xcR8Gcr2C3teqLzuv\n2YHEZgyZAwkRgBTlFJ9OSOyjmfG80EBEWhlds0OpZSvGFTLU0UhIPaHMsmwy\nec3gBw7ozHp/bNcuG4jlAbAqZQywomTykMfcnVwPUQqsQvLp5Hl4idOMvHUE\nnI8uctqgc0cDpCldNxoqzQRnKEQ34TXeZxJScmIfhTm7w/Vg/ag9Om5vkqyQ\nEobCbzS/Y0TeyM5oN63BU/x+P6OFqFqmY7vcpbWqEj8dZ9D/ClXRaSA9A5SN\nNPr0OtjuXX2WE1wSwvtn5xpeEQsJVaCTy6+KdZycGl2eu2puSD2yEZRR3MOR\nb19GtAvhzalXWl6/ZPrmykr8MSPzmJGA2l2fr30gGrfcodoNJrVvQYaeYYTG\n+jmngN49jy472AiIdssNv1L05X7U3NHAnl4YejHPT8OzoOVHjekZJJ/ejmyb\n18d6sQvjI5o7TBA5MweOIPq8g8SugzXSCUBdj+5EzUKgFs1eGliHVoxh/0wP\n2w9gUc/a57WjXCXMbtDpQnfltgv0ADtlfdipd3UoJ5beg0iLouKUsBbZX5UV\nbIfG8Go8886zwvs9xu6rVAjFILlnm6cFpAdkWt/845oNMqIOaC6AoMz0P1xE\nSFaD\r\n=tCM0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE9k8HeGRqB81gKOzW3lH9z1tidxQyk8ypp+Vb4cNJh1AiEAjpvQvhbLcd6uS67YmILkiQs+wSm8MRDbXCSrSb46RTw="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.48_1637132324291_0.7809670283316463"},"_hasShrinkwrap":false},"2.0.0-rc.25":{"name":"@leanup/cli","version":"2.0.0-rc.25","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.25","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-cojd8fIgStc3XDOHxJlt3XbXoD6RdAMA7LQN656XXtNGGy+8L1sBTMftDR3GpuDtD1w+c4VlTE2DiM5dqkM1Jw==","shasum":"96491b0b87ff12abc4c847ad4bc3c78e1040f56d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.25.tgz","fileCount":63,"unpackedSize":139846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlKhbCRA9TVsSAnZWagAAxIQP/iYMN9prE4SgOggdp5Vv\nW3XH302KE4gStIQfvT5kMhdch22UUvB1dJ1vWMKfn/2TgOjNnCZK45hYVKsX\nGWjaSLRHT3wU5e2+qMoJDW29tdiAWmoq1Zn3VPIPcw5cbHT/af7zn1l8+MwW\nLiwbKfsTQGcVH4iKQ1ENf1V6xYGacPCBjxwCI0AsqiO900mZgvf9Z3e0OZlV\nHCmXcDlMR/02Gy17MwF93VVwa/iqD8M4sRM4g6BHVY8bQKIcSzK+wgFhg3j/\nS0iw/Lq7c0OCDbfD/bR6lzz5qlB86FAhPDjVrw3V+tfyqKlCaPOUDwDCiGxm\n8u0yIIIvLDHw2F6b/nVTf416aG0ZA/B/SDCwRkRLVDpN9XNVS4V0f5y4aUZm\ny7jqXZCpboIABfaShLkMBlTPAFQkvWYRWM7SB0XWrt22y/4irLE47gLs6XD3\nbIfYjNmEyZHD2pzPMtqrhPZ7bHjIcops+OYSiH9UT9OgjMCXFyxglyRZmD6b\na7rgKAEVQWx0Ne3sVOzMl7Y943ykoMfdrJBVNnQfBmLdgH39peDck83qCXBE\nq9oYlkjBBc8yHCxjEn7r1mZxl8iqGJt6bv9WoXcrqM3stIGehKVPVFlQTlZZ\nlzE1FTwpwLmyVtHAp/YhX9C16mWuRSU4uBjZS5YisfVjV3LbETX3mJ9c3usy\n10eS\r\n=rSEz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFXhXf5Qojb/wtrhgNGJxBjoRxkN5GASfxU8jZVlY7gUAiEAiMalIRM8avF4j1xrUUKh4Bm9RpVWwPqH8TrT3+mN4zs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.25_1637132379805_0.4120425856876624"},"_hasShrinkwrap":false},"1.0.155":{"name":"@leanup/cli","version":"1.0.155","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.0","@babel/plugin-proposal-class-properties":"7.16.0","@babel/plugin-proposal-decorators":"7.16.4","@babel/plugin-proposal-optional-chaining":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@leanup/cli-core-e2e":"1.0.154","@leanup/cli-core-format":"1.0.152","@leanup/cli-core-lint":"1.0.155","@leanup/cli-core-test":"1.0.155","autoprefixer":"10.4.0","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.11","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.43.4","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.155","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-A5eO7JIeepFE5UE8ovDu8ZxFwqCDWWXoFDggna+DkqHponGG4THSt6+9nF82nhFkC7PA/PmWZMY9DxQEr3nMSw==","shasum":"8b2c052c497880fa55662087ce0ab147f017465c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.155.tgz","fileCount":64,"unpackedSize":152161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlLYgCRA9TVsSAnZWagAArJ0P/jCVaGrK0P+3VJRhFK6p\nuIpgg8NaeQ2YWd4rHQSJ4os4Y74XD3way7hAobMIyVRlH8RGhbdXIkHUk66x\ng+XwiGPTo83mmAeq2Gdtvagwj2arlWRu9CaflfVT/OcgiLvdeqsWtF60llFx\nEYnHpGg/MBebhdVBAeCSTIfj0pzxEw2EC61Gkdl1WOiL5d++t0b9yu4fkoR+\ngPX3AvQ8cOutfnINZb56Uy9IrFnO3CSMJTl0bJdb1a4KXNjiR0ueCw/fswat\nvfRIGbrkGxiMXthdARWOoRQVuYt3SQ+aUWS8uzIuLp05rQC74yShOfSJ4QBz\nSInLRlnJNr1dwzIu6B7TVnGO9W6kO5uQ9kCNY0SHGLCPXd3ylvjGx+HzAMnu\n6+f5bT+0/kfikHlloZl8nkLnv5a2IfGm41xlqmimlEOCMqWHZDukTBf3TIaF\nsLkMGiozAXdUYPacL5dlO7zhXkByB5iGomqnFu2l7tuxiyG3GC9JkHMKjRT4\n9mOq/YmOmnCjPF9sf0MGYqAzn9NH+7J4dqtpUfSO6OAdPFFgPnIBt9hLrLpM\nE/QVjcs52WflB8e29Htg08gObYCmk6vaMuJBYfEqf8gDLhOZhWJSfWGJ/9cH\noALpwhrj5v+ZvKvYUY6hBPIVmtd8HuzpfgINpTCSPALYDXSjGzIOUi5oyWEc\nL6CG\r\n=zeqh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHVXiBtlMd94rrnw63XqNdtqlM+TVnIuHg0/xD85/KeiAiBueWS7kfV+fJLR/Zj4xdA2nGmSTV0wqTPrFYWjJdCU3A=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.155_1637135903886_0.38684066867427225"},"_hasShrinkwrap":false},"1.2.14":{"name":"@leanup/cli","version":"1.2.14","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.7","@types/prettier":"2.4.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.14","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-KAGeYTWpA875t1Uweb6KCReT2cVvzdFevSdAeiMvjyPA9gcXcpXW1VSnWTbsZVkQk1qW9FK3iAbSFOkDbyamlQ==","shasum":"1cf0cfd9be10b29c09fc0e34a72bdd51900572b8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.14.tgz","fileCount":63,"unpackedSize":139801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlW9LCRA9TVsSAnZWagAAQkgP/RxgF8bYa3EJZyjrO1mn\nwKXviYbeGDwWQRI+1z4FOiPRuMGXVoOw1rOMJqqpwY5/6reYFd9lLRqjW5K3\nfVA9HCUmvAP7fBh1pU1iF728QpEH+1+6CbBv+SSe+onAoF23FWaexjjaCvdA\n9rYM13GDFjlf9K9LlM4WNGEfHMfDWSqaExqz1T+82vP571q2gQtcBX7rv/QC\n66bMz4lA9vp4139qbskrPdi+XnihyV6EXK5qWbe5ErtbxtQWqSgIKFF72jtX\n9BbwVA+E9+oSID5g0YDlCFaLKMl0iylEsoikALhxyxL5aMw7RO1elGq4M+fr\nmxsjdk50hxrkxJANAzzNgsHaewz/ztR4FrgdLSXwXbKYNmN0nDl6btkRBRit\nCa+SG4H5aI2krQHROb6u3mC+d2/B/VJdWx0CKHvv8OPJPeTrsDW5S4dWB7zG\n9Z/ayfVoxPfJe9ZzbqnLxLsh0bsCY5adkF2tVpUiXeaLAUusAOOsCAC/JyCq\nAeaVVEE6EzlNkGtCiPCcb7A97Sbk5plMczSX2ADdaYRKDphlAj9NJlmjdIPu\n5d7bEb7nACWhdfd7W1Mz/xQVMs2WcrAusU1hOZ0QbTMZXQYfB544b08hbL1Z\noMFdnhRH2YNtMh+Rioy6z3/W3V2AS0EZ/A1GbYXqVMlRk3UpX40JjHEl6G6M\nNqnO\r\n=BUKS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDemAwIBnmBLqFZ4yT5ELdj+66YVp1wQdAYJrWfouFc3wIgWQ7qWt7Kgno/ZudoA4tEOWu+RFb8FvKX6aIDW1q+/gY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.14_1637183307148_0.07348972448808144"},"_hasShrinkwrap":false},"1.2.15":{"name":"@leanup/cli","version":"1.2.15","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.10","@types/prettier":"2.4.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.15","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-/AGdi5TqpU6Y1pNvPBIN1fUnYPNiaJNjEdZ8/hseZvQJVvRpGTVzlbEWcW8Ry+gL8q15s/n84vzhthCIyl/pZw==","shasum":"7a57d8294048bdef800a47070c0e528c6afcff84","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.15.tgz","fileCount":63,"unpackedSize":139802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnnVgCRA9TVsSAnZWagAA5Z4P/RfbKWAXF696aDTi8anG\nbSlv0ElGfs/9hK0ctmNv261axunK1R56ydTI15IJxrGC+53XdMG++Gi1GdkH\nYy6Q+Eb9Ge8daKpfESWx2VfcPwVh3p2uFnUu15S0OkirSSb1tiESul02mVPy\n8NkDWnu9KINWuHo28C2WKAIIAklWq3iipUhXYWdMuzt/vbMqblkUPA+yl3DU\nm/K6UAJDQeogqINQdnXKIyBkdZF/tROyZiPPcCHNBNC5Elo7k3FzmyQTm+mp\nvTmjxMTKR3sjklKTOgjI1u0cQpkBm4wFWVlga2LvrEwKILzg27c/kDk6+ngm\nv0hpuTHcinNpZmxaLettKR76f0PEZUHFGP0vug82OQ8ZPLBAW2XS4KM8EwiA\nvWgTePtqNwA4CLM/4kozt+bxn3swm6ZXdsvsaeZqrnFFahcQ6o0f9wu0Mxst\nHOcnplIuPtWwwEq3NQYm7FR61uPtESP4wp18J7AjSuDiHzC2G0IJh83kLHqH\neXLyeAHaNnvLsnIo2CnXtmyKinu2b7vLNoEyQNln3WtxXO1b/fgw3fNoxFAg\nfokRlYajlPo0mjT48ir4k5YjR9uZjusP0wySpVgcO8yP5ZwEJmC4QEzuNU9S\nlQVflZjkfuw/mCi7aLnwW/QMQFN8CYTjzmaVqyScNwT6PJMZklmarZDBin17\nJj6F\r\n=oabZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBiUADUrzYXQ9eUQOKuoADB6gPJoqWHLjnu397sldzb0AiEAjXHci0ZTmq06mx/FmpF0QMzfe6FmWcLQbwpT9OyxS8k="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.15_1637774688040_0.6983271651211096"},"_hasShrinkwrap":false},"1.1.49":{"name":"@leanup/cli","version":"1.1.49","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.10","@types/prettier":"2.4.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.49","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0RJSogaI4K8hW4nOO4511f4rZmTxEyrJGnBxT2PRA4D4RtR5N6vkFJgZ6LGBvGL8g1oi6n2qJpkYxMoV/59c3A==","shasum":"0e28899349beeaa0f868f221e696ba9487adc6bf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.49.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnnWFCRA9TVsSAnZWagAAHs8P/1RSVJMKuiQYXWVAxTsd\n1f0f5bn409KhI1sDC0H13LaNb9TuNWKe9/ylTxt5t2t2a5JhJc5yl/LbMYZB\njga13NhsC+JQtmellqRbFoDgQp+4k9df8d6QvpNY0D26pBo1q5BTQhKcuPO4\nQ1RsOD0Pk5yaR3/0eoO83XLDzdELArImop8ZMWXOlLu+gdbxNC4JwuquWwj0\n8zpqzruJ1aYFZ2/EnlMQiOBCDSwkQZaEkFiNFJMVSZ7R91sDArNvWNHo4IHU\nSbJv5KRKRqC31nPctWpU2rD2GPVDV1biiY7vZZYCxAidYEEQPh6xRVjhJ0Ga\nizCSJh+U5SG5QxuaH8XR+6JYx4fCsdF5QLyU7GUAzVdtElINQBkukzAzqXTK\nrsxSuaGyKXFjR9Wy46/X8PlnPJP3mI562pu+xznXEkwG9HJIZe1VS9Uv4Rio\nV/QfLzm/rQMPsIeh0zHMfJxSkaHbBWuSl2DLtMKRpAexkW0Cw5LFYsoUv3ad\nR2Y/a1sNG567cLqAHiWkkdMegv9lsVGGwPeWyvg1XuyEfyj/ISmO1OlALs6t\n7Yg50kwoV1y33pqGecJ6rnt9XM0NuDmBjGvBU9459OxJ5aAbIcsr0MHlVcwC\nOB5a+6u6AcCpzN/2Sjxp35IBmC3NL92J7107k6L5YS8GCtbvHoJ+hu8hj76g\nqIL7\r\n=L+H4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFI4Y3U0A4afOiBoSyxgNQMu8WW9t36BfHKFnrreAxRrAiEAzezNtg7OlzQr9AaNlmkf+QVDJm1qDIsB7MbxhKblLqo="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.49_1637774725043_0.422755117931332"},"_hasShrinkwrap":false},"2.0.0-rc.26":{"name":"@leanup/cli","version":"2.0.0-rc.26","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.4.1"},"devDependencies":{"@types/node":"16.11.8","@types/prettier":"2.4.2","typescript":"4.5.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.26","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Gx8yQnaCz2IRSVJiOkkySWDezBBEJ7VRl61l2MoemJnmNdBLV4xu6D6TkahK6k9nVYQWUJE2HxRTlMpaiaWTNg==","shasum":"40847b215637da6e0d0b505a55a1ca424f46b601","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.26.tgz","fileCount":63,"unpackedSize":139846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhno5JCRA9TVsSAnZWagAAjw0P/3s+XULegtCw2Y1fr7Qv\nn1us+UE9VIiTF8Jdz9eh7BTUQUye/jTJr0T3jXgZn3R1b0ZjqR8kKJbV9rXE\nBM8ndNplyvKV1x0OpzVv2JslXALHeaILZ1WksL4RZE4OTJsoqs7bxHQ8qXDG\nrJg7A8R/MQAO8lsa9j4AytYZsfKgw522C6fDyDq1dOx5oy0M7eQ3tfrID6Ai\npJO/pca2yzoyQ1AiP3rUNLOxAh2lGgcEm5fVCmxnYlPAK3phGZdb/lWBY11M\nOTCSVr6DmnFX2bEXvKOQYLx6iFKJ0N+54qQvDB7KYgcwSP64LdyXxfCv5WG9\nrmtzZFSECg7Sf5etlfPRwnVnqydexHhQTecDHWWwBmV25Pr9YOhehaFyzjfl\npTjaS/UOIJlqh/GtWBBtDKU/7MRM1CA+XJJoCtYVmuF6PXnFEHbmJhOURyO5\nn731KYLJDVzARntRMm5Lt4KiJLXuEJpBXhGWSt7xXM2nD9zjk4mS+pODnuic\nLSyUbR9yvKxKjEW6y+L0YepYxQpDR5KnnlEybupxomnpcTnvk6kXxWi+H4xU\nOJRmX1MYJ8mOBWljnHHUgA74M4wyt+30SBN0VNICkutG6H0QB5BLEdHcA9le\ngndoIcUFaY7qZcwWUZnLvRQSPyJ3uyghXa6XFe1A1avFmFswYRko8+gqskDt\ngiDc\r\n=IQ7C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWHVX+oQOfD0gjcW9YJ/Z4Vkgo2rzUcCGu9OMb1xBdPgIgHELXYnpCh40NTKkIeeymZx7wkw7Gfw7RohHaghprTCQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.26_1637781064910_0.4120773513289733"},"_hasShrinkwrap":false},"1.0.156":{"name":"@leanup/cli","version":"1.0.156","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.0","@babel/plugin-proposal-class-properties":"7.16.0","@babel/plugin-proposal-decorators":"7.16.4","@babel/plugin-proposal-optional-chaining":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@leanup/cli-core-e2e":"1.0.156","@leanup/cli-core-format":"1.0.152","@leanup/cli-core-lint":"1.0.156","@leanup/cli-core-test":"1.0.156","autoprefixer":"10.4.0","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.3.11","postcss-loader":"4.3.0","prettier":"2.4.1","sass":"1.43.4","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.156","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-RP3NATRC3oNm+L07k7s88xTt+Fg9+upgIxE4SLWKWdNRvCe2BNMNWR04mXvVIRSdufl/PtagQASef+uarLkCYQ==","shasum":"871e945ef7b992356abd885bac1d41e21268b9f0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.156.tgz","fileCount":64,"unpackedSize":152161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnpSvCRA9TVsSAnZWagAAlzkP/RrZ8BQ+DUqhSU6iYtER\npXf7aVVhmxgxZtIDYln6ZYLvaOVFO5MXYncP7ARqFPsTcNUTHxQZ4vcE9WVK\npb3K5RDXsaurYxdynmGF0knZ/6n925jiUb8tpXWaamjVDFtBU/WvF64QQ93e\n3nGlZJq0x3xMmfLTFFUJJTwqYB/gc1wtsPCYviGKsU8usbqQj+0zUzcE5fV+\nDvcKhhISEwvk/8dwXsRH/+mdR8xgrXNzGG91wjubs/G3T25cumg9VYAKm8k+\n7zYf9d/0XL2lhJDWIu6Gc7en1BKE0UHtiP5a5FmdLYy5i+hdnA/e5Rzq69h2\n5xTUVrqgsmXPCW6NIkrCPDS+XUjpowDwVuAoqBw9nLEUi9VWmRml6tBHLGYj\nGJhGpV6W7EuTZ7T9LSfLcTaGJJYCcWO+bLpqbnycsCQpbFolcFX2kSnkKOlA\nfvjYmUj5hZaM0Qo1c/Q+IT5lcG3rvofwdVJ9WDAc8HWvV3eq3qgX5NELsB8Q\nsHFjrVpJGeCSaGuNZrpTWSWsB1oynRKkd4BU7xkB+OcrigBXwXAemKeaLlhP\nWC4O3zKt/LQp2mkGyVM15CAqLglT05hoynhlGHyCT7NJUHEP1Bv3q+YskwkE\nq+/0q3eujZP7UP+ArwXUsx38a5xlM5AVDNAt8epvAQco6Skz7hnDbiLL1oGd\nBx9V\r\n=VAXt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAs/vEboW3ZO7FzVoJtitgn5lHtJF8ZNNkEb/tH+dvOfAiEAo2n5JynOJppvQXXUmFuYwh01x6ImkyYV+oXsf9OCPE8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.156_1637782703299_0.2014969341867161"},"_hasShrinkwrap":false},"1.0.157":{"name":"@leanup/cli","version":"1.0.157","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.0","@babel/plugin-proposal-class-properties":"7.16.0","@babel/plugin-proposal-decorators":"7.16.4","@babel/plugin-proposal-optional-chaining":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@leanup/cli-core-e2e":"1.0.157","@leanup/cli-core-format":"1.0.157","@leanup/cli-core-lint":"1.0.157","@leanup/cli-core-test":"1.0.157","autoprefixer":"10.4.0","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.4","postcss-loader":"4.3.0","prettier":"2.5.0","sass":"1.44.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.157","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-NFt2gw51Dz9KjRNHSzqLeNHzdsETlyJimTUfDDKLAUepStoVYt7Jy8qvFVAQPRhOUpsK2cqBlwiMC+kC/1ux9g==","shasum":"988ee7fb81dd9ba260c21a3ab7698c32523e79df","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.157.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq3QKCRA9TVsSAnZWagAAqs8P/02FXfyXhbW+s7zwa82C\nGEKUtBNpjblOQS9OdqSMJD0tWIiWO3nqhqharRrek0Mn9KUFZRiI+S3wYyt3\nzTR1AkBegZ8QT8eRqSaud4nsUyvLEEISu1WPNCroBDG76cLC8a0z8Zp0dEzG\n9xoN0Y3OIvJrTW17dIYjU3y2Go/hE3CcOZRGidCFJXJAgEydbucvFPuym2uC\nOkIQ/DvBOmNjCZwnhxpxZrSbWOCJmdbe6DRdYJ4CwRlIj2iQswuH/lCaPiZK\nPWBf5Csysp5pCJl8a+8sQujQsGHHzzQZWFGr4G54QKhfOsXhzImk8eJ4Gew6\n/Nandm/Oo3dSEG8tFYCT05lFsm8g9HX27k6WLjorkWIpH2YOZh60MPdz32gJ\nEMIF4Rfo2Yq6DAasqOax/6xCrmFgYAlb20Y+cHAiUui0Akl3O+h9VXq1W35P\nVumFPK42QxYnAPbmfQGJpPrMYxD70wuUfiWYpqMX6yecYlUfndYsWTdljt1T\nLDYdJZndC90WVGzXnGhmKbqc24SWZuCKzbJZMdy6R9Gw4VlzMjr7pvVjguS1\nAVmVkd6Hi3Urc7yKk95xpi0EIf94q0mUyDEaIvP/txNXWfpBs5VvnQnIpOLz\n6T5uCOcb+oh+rHUln4xcRPisV5vSytUX39wel7So1U0vU+hn2RNRp0hWbqCr\n94Z8\r\n=EUEU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDoEbIHsNqRwkzSrucRt7i4aupbYVJxOgCsZZKldguaAIhANhrZfNNlEhAUIJdLk1O+c1K3yWyXDKkCHnCO5uZUXWc"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.157_1638626314823_0.4398051628528772"},"_hasShrinkwrap":false},"1.1.50":{"name":"@leanup/cli","version":"1.1.50","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.0"},"devDependencies":{"@types/node":"16.11.11","@types/prettier":"2.4.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.50","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-1SIkSD31nOk3zgQkVb1tEDGbcARsQtNTBfCCLiOSkVDgJ1igE3DVWs8IraxvhLkUYg0+kbGfZU2myyImqHXvnw==","shasum":"336649bb7a8ce2a02aba61e2110b3afc7e9dd8b7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.50.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq3QsCRA9TVsSAnZWagAAjZAP/j/jW1Wg6g6JpkUUH80Z\nuixSqcKnGbrqAasd3OVsyoYmaSp6aSz9hj9+5zAowskjI26zGa72V6eHcWKs\n8umthtLTkltgB7H7E5mrFp091RRUZY1hfAGJFur63/shClqPFVhPhQaSj7Sc\nbaNnAffYcPlk34TN4h+Ywlm2VvQvJCXsgC+AbnkLecYEqI+bTDT46s+4lAEL\nouNfkmw3K7lA5Ay3zkIaWYtKyWSskyZZAfkLFh25VMg/L7gEtIoXeqRKT38v\nwoHjyrgsyeBY+/agCmkudmR6X4jTMDa+pbv0Sb+dhe2MmEFb89q4JQZPhnM8\nadfBAWAFOnyJKBkav9g2pD+PtKAEu8mb1r4f6uL3XCogX7sTHpYG0dPoKLxB\nzttB0TJP6aIzbiUcButDSC87b3eqj3U9cekH9z+COwnD/J+KMRPo2mkQynn5\nbGhhuNwDUG1a6iypR/LrBct2Q4C8WWu+q+UokXFPBKj1NP4gceSVnXXRpM6I\n+xeKDr73RnxriAdFBguyhP4k40Ew3KC7BjQqKpj8gRC/kX1p8mA+2htIckJd\nMFo0Iu7r9m061NzYrybQ08G9FXagmIZN13TeunCIW5ER1d7bWTr/Npj4aGfn\naOh62fvP4gPVkwodAQUtjj4SqsH9piuZ7yhzsWM0pY4Ygu+0q+uixKmMR1pX\nFjxh\r\n=K/ng\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrAC+lorOnAztVOLXg/aqmuaGY+CQpK47SY0vaQGYR8QIhAJJz1E4tmlM9yeYu8Mdmx6wwXbp1V9zc2c56sv4/H06r"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.50_1638626347989_0.39994081015983807"},"_hasShrinkwrap":false},"1.2.16":{"name":"@leanup/cli","version":"1.2.16","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.0"},"devDependencies":{"@types/node":"16.11.11","@types/prettier":"2.4.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.16","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-6hL3CqIGmvuhIXUwrx9jw7MqFkEEm3wexZ405jXqTCfZCv+8AXqKsSTf+h0T7aWHdWsAtqSXA63bFPwl9yPvZA==","shasum":"923dd258c1fb4131594715dcd966c670cfd1f4c8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.16.tgz","fileCount":63,"unpackedSize":139802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq3RoCRA9TVsSAnZWagAAsCYQAJjKqhnoNX+DqkTQgrt1\nBUDaoHKGbCDadxYoH5spdGCYsuv0POZkowuIBiiC6lkA/hfN3UjbO/qmnKvZ\nKuZaW9Ur8YTKozj1KY/hwLi2RImNTFV/yX7yABm7Y5M5OJR5uz7nDvKBigwW\n1mKcgXBqfauLhico+MlccaqnL/mo3WWj89UTKG0IVDFpHg0fyCbz9cfpczCF\n/T1oY4aMNa4ABywJt6JuMsSpvOJkzkAxnbhobRCUm2DtEli1bxI6J/M93g/L\nJURTEvOGWz9eDoo2AIWLg3PHHtgXLzu/xH3TRoEaVCSsEd2qFYqEonBOsQCP\ni6aRlD48EQAzS+6nfb4NeOe6RXMBlQq6K1YijjZMBJ8Z63kV1OTmpFonLHk9\n4Up6ucHrJRb7Oq46OrHKrQo/k54228oEbkqLuZAG+dwgFOTKXenzdeHoAdKi\nSCu5wkr9tUuFTQFUktsYaDHKvHHP5NsDf+ipYMyvqnqJNJ1MmDb2iA6DZibK\nefA8yasTNkeJ3+kjSTYohEw7osP539EE1lx/IqksLyQGnU7Bn0n1QNvuDngu\n/rPeBePGtyoYnG6Xtl6pD7ToGtwkcl9oX16mmf9R5lYc98aiISh+d+UXH+4w\njyX3bTCdZppBtUUBrB8Pk28ui7e2WU2ECtWBASobkkJ48GUtLUULaNFhsF17\ns//T\r\n=+TFk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClHm860YVnTia9bUjL9M3uL8mdOio05bMYLhtv3e6UKwIhAO+4KL98zdXqi9/QAZUhv9XBIwiLFpf5uS2RWtdYymMP"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.16_1638626407933_0.8901731119035938"},"_hasShrinkwrap":false},"2.0.0-rc.27":{"name":"@leanup/cli","version":"2.0.0-rc.27","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.0"},"devDependencies":{"@types/node":"16.11.11","@types/prettier":"2.4.2","typescript":"4.5.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.27","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-bpbfON6cJ58qOfLTc4+yAsymb50dTPznb5+1mC7WOZEdDdHs0VugRo2HkE+g3tQUIuz3NoIZixXaYLOhGNdzmw==","shasum":"739a147df3643e476a3bfc2d5a2af628378570de","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.27.tgz","fileCount":63,"unpackedSize":139847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq3dACRA9TVsSAnZWagAAy7AP/1iUxdlrtXGjD2Hu0aVw\n0/hwU7P9N9ZgCUCA5oi5INLHqy3CbGmiB7x/vGYtKTSUIT/0JhuXkzpeXBz5\njM/zr4zx+TiW2UG0BZ2RK+CA2ZQ3/Ifqvkb7wBgJPe8tv2xtTGEp4pvdIYEt\nY4wBQ7xauJU5dmxFZVJnzv8p2LNYrD7xFWmWSfVIKphDn8yh+OZlnlWpW92y\nk2OJ1/hbrQYwNe1UUeLjuraBAGudM8dletPirWsGON3WPOf6hu3Y/M7c2Ukd\nsdsaioINS7MfB3UC4MJfxx6fpyEd7XtQ4cKJwbTSdFT76VlSqEWMMC6a1fP6\nHYLz+5gDb4KLAeGw6KruMb8F1V8B1s3BrHvDnCMc90Mdx4sRDB8CuJyO9qeb\nI5WU9aylcYFbyGnbMpzyEYWItUbSZFOQuxKlVxrtPyD46uuxKS0ePb0D8Jyb\nHtKRkcrqKBcEJoHd78oMgU0oC0W44eLcx7N37FVYhFnFjOK/xj0QtvhfhDJN\n9UWE8bno5OEmTVztIszj86xx+Mmh1w1zvWKVuV5kyhz0HDNEa7HaO1a//Sba\ntFKSqX1/8ojhefsREhXO/G6we2+VyNUk4tLUInxBUdWhWLZ8ryNW8FnTh+qP\niZ+Rx3JPhAxteqhRHfJZWhtIKa/xMRe8QxYB7iBBkeORxvQhcJ4Uoa+NS/eD\nzhTS\r\n=Yw+A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8ugClAIRCb9mcZ+65utFfCH0u+FrEOiDIaNodAy40SAIgXnD8k/V76BmtAATnZ4zDHzqI8JPdI3u1C6D97zhqtn0="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.27_1638627136424_0.5622703015957213"},"_hasShrinkwrap":false},"1.2.17":{"name":"@leanup/cli","version":"1.2.17","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.11","@types/prettier":"2.4.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.17","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-uZrPVJo/ow6E4sONM+UImCYW+CVbjFKBtt4F7ZqV06Vuc51oHY6erNBaxtNtlWUaTQchcR3acXLGIf7JFNe+3Q==","shasum":"d14654e8051bbe092bfd2bd616ba4bd4f0268d7d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.17.tgz","fileCount":63,"unpackedSize":139802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrFxxCRA9TVsSAnZWagAAOasP/3Xtla9vi8ZKruSNv1+f\naixiW7Ac45V/63tPdfdQNlsLHfFFtLd33o5RnSBSiFNOG6iDwMgWvNLGjkU7\nOS2GwExZWa/bC3sfH2oR/w4Jgn24Lo8c6VxGaWvYSClb4lXPV//h/eiHe4+Z\nRkmqD6+tx3rywPwsFbw0uzRRZVJK62d46LzV4ZopWvZSN8JBBVKKvO/f+5OG\nMjYzijfUn5PyIbTPAUdlugKAdt+V7xquBszhlC4iifP+3XVuUrzlzHsMN6FG\nn0mip0+11Kn/oAq3J3g7cDDZZD3VtId2RIxgzYQPoYLmUZEWKEINNpPCc0p9\ny9JyOL5kzEVMq3AEpTPvZfCzHpkjlIWXI5TN8BiMD1NVvGMPvovFHwr1y/kq\n3V5rub3z+KG1eYAOTbGoyKg8IK6rtschnuX7Ts0Gd8r2QxP42hZC8TVGG7DY\nZe4q26iJ90RFkGyp2P1bGJ/xZpFMa/UZQOyJjX0rMBDZSS8Og0bzh5gsd8GL\ni3sP5Jq13IuOrjLKiIS4cYmH6QJiw3pahw6bRtPs3eOkix7u2qlmCqY2ysS9\nSEPZaTZkNCQJ1HlW2LpNGyA7WfBPAoRFHU2ShHrJWxe4uWQOjH1clNe8RDYd\nQ8lXXCc/45VkOJ3f7LP+HtX1tNIpbM7z1YpGRLvtHba4AoWO28lJf+0H30jn\nZ39p\r\n=Hr7d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCk97AR7XI46ZUunJi9GzXC9Lr72HRpBQKTyXGbLzkO8AIgLfi9xugNGSKxkNAR6uu9g8L63sNnBFQ2ztz6Wd4DpCc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.17_1638685809529_0.2804014697709012"},"_hasShrinkwrap":false},"1.2.18":{"name":"@leanup/cli","version":"1.2.18","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.12","@types/prettier":"2.4.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.18","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-3pM5l/9lVdRRaYJGBBaB27o7haaobQanQsUh5ctSDzuNvmgT2xz5TOgKmiCTHSWD1jvkUIN8arCjw9LA9xmY5w==","shasum":"ace638ae96375c84c6143f2d7960dee757a494a0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.18.tgz","fileCount":63,"unpackedSize":139802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtH6tCRA9TVsSAnZWagAAVEsP/0SH7AB9l10eRX1sZiKP\nguu4p29Z61hEEVRipZEj5m3PQNdu4djv6LcBeBEkcEcFad+l9nD6zCJyNzFR\nJSzVEa1IMtTG6FpH0wqU78f7QgzeZqiVf97rrk1vr1NDopHdIhp6LWF7GceY\n4K4mIW3kKDhwideK2bXKAojIwWCjvjnBxryOErpltdrhWSP0MRiaiOWzwUWw\n0e02bhtymN6y2mXZeowi5VIGfYGneNYXj8Cza3BPrrJiZcfb7vJwWsXtekPH\nscZtS648SGHZqcWFuoFhacIegOh/Ig2aTLFib0kFCSwcJGopEUeDENEkhwau\nTP2vHu+G2vcbgnb7IVpjk9TgsIjPqIT/F6ae+NeExGCFKKtJlC7g9gi8A4S/\nh/c/lNzFEwXwUl5fL2N8TFWOVagGUdF5d+4Io04fq8ri07bvQjHiJFMymgys\ntWkJeY6Zpq67+j/T5GIo9bs/9CQyvj8EdkxzwqzJuPgiaLKwE/Y77Sd6s7Nd\n8BXT9cOvBilzutaJQbgVvwkUN8Avvnq8sGMXSaTKgQMcFEFnF4EWXfmue5Mf\nT8sEBXz9Sd2tXsHEsh/6PmffAgBQlLSft0OhuHlD4nbgqGBblILiKyzEn/Ee\nN8wWPd34d1aVnkMM/s0/33ErXGP07hqDU2P7Ne6eHhfkGNPLZT4C+5ykgvvG\nwklS\r\n=M0DM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsELb6CuRPPjzvuHA3T8VvYVhtPBi/TAiHj6zqUyGZAgIgYHF4MwDETwiOl1k0RJof7G/V3v5aGLbwhyO7zaPqeIA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.18_1639218860914_0.16031738511830018"},"_hasShrinkwrap":false},"1.0.158":{"name":"@leanup/cli","version":"1.0.158","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.0","@babel/plugin-proposal-class-properties":"7.16.0","@babel/plugin-proposal-decorators":"7.16.4","@babel/plugin-proposal-optional-chaining":"7.16.0","@babel/preset-env":"7.16.4","@babel/preset-typescript":"7.16.0","@leanup/cli-core-e2e":"1.0.158","@leanup/cli-core-format":"1.0.158","@leanup/cli-core-lint":"1.0.158","@leanup/cli-core-test":"1.0.158","autoprefixer":"10.4.0","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.4","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.44.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.158","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ZEULRFw6iQmTPcmB8gV5qs0y/2wBl/VuH5pYOadTMt3sDxqqBS8xKzmE0F5sTSXN5i4pAkH6yfGynNVkP9GfdQ==","shasum":"4f2ec5174fa0adaf84a96a78625b5438bd6b2dcc","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.158.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtIXsCRA9TVsSAnZWagAA6V0P/ArTyJyusH6NLeuheJmD\n3l3Y4hsqYo1cLsrvsL0YwAnn8RjrVgd/McSJxdAhl8i0GixV3VQ52O7fl2XP\nZ0GyGjIAQQ5wQlvCn1i7hFNCFhzBk/jRly7XktvkRz264wmHzOjfx9QTddsG\nNBDiSvXa4EnEkAwLK5JyhGnmqsIBtt1ecqaK3aZO49aycPOtiW+SZ4MHn/GL\nqE0iP15c2Q2uPlW/AirNceqaO9D6uWG9mAz2rtyIGkRb5kXnsta1Pm4yHaRG\nOpmw/5uTRQvDKAIevH+NkzvCN2gxNl6DSxThAty9Wfd7XNOGdPFeWSnigvvm\n2nqm+Eo/m2DHDuDjSrHfL+spgol4jbXx3dOGy/ws8woW34C9qWbAdmFK65zB\n30hPjxPFGady33gHFPJoowjLHxyllVovfV5YzOWMv3YP1yLY1l6aDv3L4VrW\nY+7sBltq7lQuLGOPGoiA6Ibs/mOtwhqavfxMF+/JyD7/ILPwgWE+hdYzoq0E\ny7i5SC77fqH0NPz4xk173bpKqmMfoVa5j9ga0a9C+KurwVU3nxajlEZXgPq1\ns6liC75FIAE/q6+y/jJwItZ17AUgmlIYwXdwEMFlq/Sp+IpoWYtXHSQ67ANo\nHh6CmxcIVmNjh6NoymnBob/q838iyKngj+aS6w5MJeU6o0n2ZJeY5lc9Lu9Z\nUlRO\r\n=vxDL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkD1doGx1VtSzxlFjiKz9PkDFVLxsyJhmmIDMg651twQIgScOYY5Xd/GIfiGM5Pg22vhlkctMYqa7qM9V1pDi8qDQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.158_1639220716787_0.7176062006225681"},"_hasShrinkwrap":false},"2.0.0-rc.28":{"name":"@leanup/cli","version":"2.0.0-rc.28","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.12","@types/prettier":"2.4.2","typescript":"4.5.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.28","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-pEM7SzLKNr2z0/8pYn3oNkLHIMyqsZ4gugYpBW/ITIZnU7DsY/D+tqXFHCNmMP7xprjUnGShfTMxtiRy1DQJ/g==","shasum":"fdf341d5643646db587a068dff5917f823beddb7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.28.tgz","fileCount":63,"unpackedSize":139847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtKL0CRA9TVsSAnZWagAA0RMP/iGr7b9PFd23SrKd/ml3\nDm5GUjZRnbuH2KuXjyfcpGKY1FP7eSCGjfZkOlIV9AI0idE2pacKEuO19V0N\nI4tSNtoNaY5sMq45rlpnleTDP4VhZKxtHZuqvj32kI5ZDggnDMGoMYKKa5f0\nGFgGPu6wFztDH/lOcz7ZW/ea4oGDM7s4Y3ymrlcOkJC2Di4Y0Komkuow14Jq\n5rKBMsX04OOhKeTI0V5/MHf7Bmd6OET50G30F9a3Uhm9m2dU0XZCcTUrH42z\nebbUS0AwruIxXnSy6SdWEoPEcF9FuFR+cqzA2IzRMhlkMgbFrUHyq3v8QCjC\nxkS4rQpdO4m8f9c26Fp5y5SjehtftvpO9XMP1iY/IjpJniJIs614MHBL/A5T\nJmh1nE6OlOWkoJm2Kr0s4M8z4nPtcRpVKcmiops+RcTog6Gcqb/rkPT35AiM\nsI0z3q+MNOkpjaNZmFXDFNbrn+RkYPSemp5r0B7R/qGCQyzzkeR6hQntEh4M\nfeRFIyOm6Lz1QpZcL5/AOHY+DvevmkXfF2kiDY0ADEP0wG9/XCJnuWXXHvnW\nKl4mxpDko8pbc/Rw81HopA/9cY1MaUqcfFJNh7S+wqdrPLHI7ftrltJkVPpm\nmT6/+lRgZFmfQg11T34uKZ5pVXS86Q8Cg0Q4Ej3ZyLmUF3yV1uV1ETLEg12P\nb5no\r\n=Av7f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG7ADIKAiQ2/oL2f18inLTCMoo0bykAfuwx5oWNk0j+9AiAxyrNxIeq2+0LyZ5xKMtiHDxZJXUdMrkVRBdKIdO47WQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.28_1639228148484_0.7022473834422467"},"_hasShrinkwrap":false},"1.0.159":{"name":"@leanup/cli","version":"1.0.159","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.5","@babel/plugin-proposal-class-properties":"7.16.5","@babel/plugin-proposal-decorators":"7.16.5","@babel/plugin-proposal-optional-chaining":"7.16.5","@babel/preset-env":"7.16.5","@babel/preset-typescript":"7.16.5","@leanup/cli-core-e2e":"1.0.159","@leanup/cli-core-format":"1.0.159","@leanup/cli-core-lint":"1.0.159","@leanup/cli-core-test":"1.0.159","autoprefixer":"10.4.0","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.5","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.45.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.159","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-xLL7By6NlVR6zWb4P1VLtrNtY938STysag+RkBj4MnO5XrMuPnyclmeSvp14NZ2oabvSYpghORpAQqKJWXZKvg==","shasum":"f274191d8ae5e9a214b47029fb9ec26430c22dd3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.159.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2R/4CRA9TVsSAnZWagAANnkP/2/Mkc9Z4dCi8Z0siP+f\nphdzZGy4nfXCN9t9jU7u3qy2ajt1bGFuiPoHw7xc/JA5i82+6w8+I2FDFG/w\nC5rLge4B/9r/3bzCVYMpPSa9ZYh9MmHjwO/ESZ1knsiyYb+b0AML7kxeWWxO\nkCP1h6eIOWksXR6VWCqaJE44JbVRyR14UEHtR3yHUA1RyMpLFI/sEGo2x8Ps\nzqSh1EKI3Nvlvw7rQA/+QGq1gbUJUtZ5l7LB4OhQON9AHaJUcyxxU8bXMsYz\nA3P7/YxZoKJ3iuV1BwcpjkMorT7yIMFMoGrzW2CFahWJCfRXmy1++KAbUguL\nUHjlHSDbCEUfYkqaj/FYSHKumj3wYvpRxPTIqPzZHjz3L9AM7uUDrRP/cbsg\nDhRFYlZsovj7YPsO+4ciWKq/2GN0TpAvwDehjc/qErBLiQvq3jOSrWRXprR/\nt2W4AF733xTesD9Md2V2ojp5s7UDIczSrXfuFXkcgDlJGA69xlCe0jcIm1i8\nNx+EwX6WMmJvDB9wjY+xeazbF6xppES27cBAmCNA+opRrysjAHrHYOXzs3Im\nVI8wolFxu3T+v2kWuNz0O/nQ9ZZFRw1Ks81gXdJNdAwjrh8IuNiQqH7g35HA\nOuGIJ1rSVhTdRnCR9JheNSsuZ+1fQEiYrHrrK62VBUIEMC2gEgz1i7HpMnbI\nXZVQ\r\n=pkui\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCHxvUvqVo4/jAYutRh+s2oVR7af/okmemiSaD7z127EQCIQD15slG19JvddCY01Sbq3YA6EWd/XwvQ9dNSb/kPhJ/vw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.159_1641619448434_0.5258832475865027"},"_hasShrinkwrap":false},"1.1.52":{"name":"@leanup/cli","version":"1.1.52","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.13","@types/prettier":"2.4.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.52","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-kCBWe3blx5WOhhRfj2gCCZBphdF1gGI7kTBERtA7JOHOvVsacY15zPB4Pzj65Lcrda45GbGgKlh0FzDhbivw7g==","shasum":"3775e44d49e2062172fa07e1afd00c92b5c356e8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.52.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2SBkCRA9TVsSAnZWagAALc8P/2uuYO8xrvVAnYOkEqvm\ns6lTse7oZronH31mp/I8KxPLSnU/wJFQF7oF9y4bgGFoOgw9WM6+xyGI2yjK\n64rrJGIMrFrcSKSOzMCS/Ejlq6XThQSmJbNho01Ah3MUsH5GRkzNKzx6Q5/N\np+IgtrWbDrdzzeYVXRzKgvwtZ2RANTjy47S637eRYiRe/dpuOazUPeMJf2Zr\nl1xXzu6EKemPupvIj+bHM3z8ppYS6rBCH+q8cCChKZXkywWuLFwnHUgyDpcF\nSkH+fKPIzPyOlchrReUmyLxOfs0MkctdOHYtK9z6AEqSmug1CDYVMHb8pIli\nej/8cC3B0SOuFWvsewePoxRMFtYvJpVPL4FJGmZ1NiM0739+oSV+YTUbGzaW\nmURgWD3wuAVwimFK3BbKPK9FAtWrIZt2BPNVZ0tPP2symcSfY3mrS+UXwc9S\nd0IRpqTsNMJBEy3uvDncVfAu/OtKPHSxiRXPGOzHhFyHYAObE8tKrP9Whv2s\nlSKXFXNUCwg9ZOIgDDj+ZLlQqxEMgEZoVWnUKswDbnMHlyKIC+mU7bX6CC9T\nhYowi5Fq26kMgDqhZDR6iermOjfQhiwAFbyCn5U49oIDXT61Ry/Z9IALPf7L\njJ0gljit1RYsE3ekzsz3RU+LMOictPC51ucrqTsepY1i808wHiqDawg1+ZEg\nLEYV\r\n=1UGQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF4YjQpnFnIOSyCe4HVcjKzUGdnz/ZXhjZVqMsIaTmz2AiEA03yv0oU/YeEpa1ZiayZfhlYGkLTaWHxPf6h64HFoxRY="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.52_1641619556719_0.6184660978107974"},"_hasShrinkwrap":false},"1.2.20":{"name":"@leanup/cli","version":"1.2.20","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.13","@types/prettier":"2.4.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.20","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ROA5NaZbr5Ka8JzpKkj8QSJfRyz1Ee2G1QJ//2QJRk1+xnOeVkIl56Cctn6RgS7uT+Nhu2tXvI5eK4t1aUUkNw==","shasum":"b2c9a2e1240e001cc5b4a6c9cc14b5797a8d810f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.20.tgz","fileCount":63,"unpackedSize":139802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2SCMCRA9TVsSAnZWagAA6C4QAIBo+bCaFfSNjLMabVPL\nWDjWsMVyHyj2mAweRyt6P8twbOddudjReLB8cu4K4/lPdGCN73ZJGuTYliKw\nusqpeC50IBLuTzdG+AaunGC+IW71emrLNxf8QEGjUbsv4z9uySUsMy3wlRdZ\nYZPWktFJikxr8owdhiRJe3YETAJHRcjp8Itybi9/zUJmEMkgAVk4pCrAt3mk\n+0ZCTF8t/ZbpprKm/Spf4Vx8DvIhH6qsi8BDQirvHr06m6paRDiRr22Jxjd6\nikktfDb/VWbq7aM19glmiedldSzNqnuDehdhbpwr05NowZ63qcUzclEp/tPa\nUsD533eT4zvWK+LipglWJg30mD00AJ2VZkbtqdV3fECYWF/MW+hqNpUnX2Xu\n4t1nCCNGSCrSBPfieYZ53rWg6tHvArRRpZtue+MGZwvvrthfZ1f4Z1oRfNZ3\ncwSd+aqGSP4eQRnNuGDGIS0xN+27sGvr4HRF6Xf7pWFIT5tUo1E6KDOi6VaP\nYTgOE3coYOKNqXsyLz2wap2a/2O7UTTmnl/6SIaKiZpYkIOGIqpG98AuvQqP\nx8OEVaYHfqGVz21Kn7TyQWcm8E7VnvYD/NCITQuVdR9BXAvEJiEyszUgo2uR\nTaS5drE6wbC9rD47S6VNJX76p2+NFhxWdbvxbnPuweIBnRCLqCJtAKJsS4tJ\nRCnf\r\n=n9/D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDamyOMMd1LVlk3APvGjLEN7ST/OtcW1oNL9qSpuPY+lwIgHD3qCVdCkOIPl0v+W+C/PrdeDstuuGRYTS7tlTICWbM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.20_1641619596676_0.8758192914485536"},"_hasShrinkwrap":false},"2.0.0-rc.30":{"name":"@leanup/cli","version":"2.0.0-rc.30","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"5.0.0","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.13","@types/prettier":"2.4.2","typescript":"4.5.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.30","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-KVRFoWIyZd/AbDWFgQRQuamn/4y4vbOTOxbbhzEIrFOQk892RZ2uv99JnIqYExNWjkG5nzhrWOtyDc92Ltir1g==","shasum":"f2f7feb250f9706a3ffa0403f7b3199e5796d2a1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.30.tgz","fileCount":63,"unpackedSize":140014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2mrzCRA9TVsSAnZWagAA5V4P/3W784ZT1pz6tH7kHMtw\nytshuch/A9vVnLFqYiKXFIemoQ6SKKsguYCaT7JrHHg9VHVB5Di78JGgJr5z\ndt28t1NoDvYV+r9FLjD/U4Tmk88NDc+DK+ZarXyakj9ehoggoGOdVw7seoz/\nERhiMamA/xebUQETSwkgc0aXn7+1z7xf8/eVEzF2vqS72/50gLzt9h5/kcX2\n7N5xJBaFlIQqVtquiLCps7/Z6P+XVi4Sc1XXn5611y/Jz1jv4IpLu756WPB9\n3MtF0rEiQANlEPwn/lNrYfXT6TZJNFpxuhi/S/C9WurjyEwt3sQPd/SWWBcS\nikxz3e779NOqV9kg+Tr+HMasaq9a32uy7iN7chQpopbNlzkf5Y3SuP8apuip\nOBwj2Ir2QDgY+DQZtI+KnIeUYOLbncZxH6n8yK/KXFutM9i7/c3EYym3JaKS\nZNxXoR4oS72RfQv1kcFvzJ96aAFJUV2NNK8UjBanersGM5PyJ29iH7vTsJCh\n64AMeoT3nM6mUJhC/jZq6rQ/aIYxZoIf4o14ATv1KtQkwyVPLFUZIBG9XIIF\ntQkBGDJ1UdOrlRD99cDlh9UTkBuYr0caACcuAt70UTRbhR93XEAsC2/goRH7\ndnu9RPH52z6MJ/R99m3mpmDqvBMink5ZcQ6rKBVhsb2I8EqnS+U+mb3qD4gb\nHlx4\r\n=cyJs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG8sawi8wufMWoYr06a1tNW/XrcDdlDeLRM+VjxdM6lCAiEAobLuqQAQYMoGNh9EN5GGtUYkyHedYKqN4XRUa50gOgg="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.30_1641704179285_0.02266239264829073"},"_hasShrinkwrap":false},"2.0.0-rc.31":{"name":"@leanup/cli","version":"2.0.0-rc.31","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"^4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.8","@types/prettier":"2.4.2","typescript":"4.5.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.31","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-1I2bJAdHCE+LiNPgSVEPy2MZ/EG9SfiWv1s5hL5SdlFdfhxOLK3GuRuS+nrgRhmOvTbP+xpSKswwobGJ/SUNqw==","shasum":"096de93c2ee186a07ad6d9d9d19b05ddf649559f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.31.tgz","fileCount":63,"unpackedSize":139841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2tjiCRA9TVsSAnZWagAAMywP/2GiL/u+SP4RQk/x9IPI\nSeAko+YfRHKHg9OQ95Pabmv0LSSVYrDuWoqjedlbCjzoVfaz0NfFRdbHcmbR\n0aKt6dkJhXdJ21RRgsrkB1u88eAdOSPcF0ZV0whoJkY+KcqOqzahwuzL8O14\nBLekJ1+dzCGU+hPfoQb7wb+y/8hZlWBpRDTU0yoFerjnALONm0IZrYXFq+KF\nTfiSy3g7wA1z5Xl8wdYvFL9Xj06nuGFL9j3SAK6qjySwqVsLVUpZ32iwAMgj\nGU1ezCMYaBTJXOybPpKABKgEWQbyac39raGT4zV3eUk1s/hk2pMvNm6NTABr\nBNNmbJV4x4tXpgIssrvWmRqqzxtzqTxzMnaBppmXgFgqZAAB5OdGqQ2a+gOl\n3O2UO4Sx/DL5Nwvy/35AsceZLtOr6iAyUU8+39RjIOoGUTGaEHgrIvudKmWn\nO23Cnbk7AlmKgDEr5kw8/nP7Pwc46Kdcsw4UyyZsvQw86PJCafDHl1bwc54j\nZcXx5x44viOTXoYbjPJhOncA5zz3Ogh9ifjeR7mUOW2GQvp2otVpwg5JDITi\nJYHBnK7s378X709/7pgwjH203PZpzob/EuAiDXBEW+hy28T6r6pRHF8Qtb8Y\n8GP6zcv1Lp3OKhkYC0/QK30uVsiubNVB9N+CeWRYugyhw5tyCufwCDYURK0c\nOORf\r\n=fvp9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZT2rbOkX9aDcpNR0l5zBERGci0KU07kF4DIZDOZU1xQIgQx0HCx4q7LMkxER5gsPkX5BJzMv7XrHdUQoalvx16+4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.31_1641732321971_0.511479648988981"},"_hasShrinkwrap":false},"1.0.160":{"name":"@leanup/cli","version":"1.0.160","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.7","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.16.7","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.8","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.160","@leanup/cli-core-format":"1.0.160","@leanup/cli-core-lint":"1.0.160","@leanup/cli-core-test":"1.0.160","autoprefixer":"10.4.2","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.5","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.47.0","sass-loader":"10.2.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.3","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.160","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-2sQv2qliqyotc0UUKcS5aHNFAtgcb77WNZIO9F2kdimXhGR9cEgylBMX/WZV2rv4Rx90sPbPr/8SPehAsmLPlw==","shasum":"0e0706264285455d77c1770af761eb766788fff9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.160.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh31hjCRA9TVsSAnZWagAAPyUP/1IS+QzafIWG/9u9DxeI\nuz/sD7eNnrIkRuXreKKJ09YOIrDz76IImyUmk879N881hRVN4obf5QSJfiBW\n8im9bvpCsejd3reh9+Ecn+QX2GHcVeYccHgCjjw1Aigiv3061BPWYUd0+RRB\nbdA6jsZXCVCJP3/AZ37LVrOkYOiYKGyKdtqpwyrrKk5JhX0jfzRlcUG8DUzl\nOrmaiRsONPGCF5AAQcq0Cae9E+xAALuAHlZK++E90JSnf6i67NqVyWYYrIyq\ne/Qrqw3D3lkS2oRRj+hPYtzvfG9choIgh2Bb/OE+0ArA//K12qDHZF8SqrdS\nkziA+jFpkua7KxiEydlDQRYnKxvVYvqy8LA58f+JlgktKvDYB2VGExyF6tVM\nTS+QsXfSqJo0eMcSzcxVkubtbryVjkZmRrMovBUrjChYKvmNgNbLw9HwST9Y\nu0QMyYYrdOSiGg5KGFA4RqZWuLuyrQOlvDrQf5GieGFISFnzd/qmdy95V3v0\nnKsen8ic4BUYnO/pF0ks02Ql5bsuAiGk5Z/Dkav4LgRNS+x5seF670XbyGWk\nvuCiFRNQEBlkFwLkSkyUWTYGJmgMizGf8itjeGDTN17EqRaGj9Mh5e2evNYq\n0OzvU2/C1fuwur9p/HxJPnY7Hk6yPiuOvxBInLCqiMl4Og+IkpaH1Rs1WpPR\nNCDv\r\n=srfC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHQE4Jnypmv2v7cPtKpjD3VzIkLd2Sf45SAXnNADH3CsAiEA3APMsvK11Be49KqXecVew/xOjxhUheTp/bSlVUJzaSU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.160_1642027106969_0.27640871953422264"},"_hasShrinkwrap":false},"1.1.53":{"name":"@leanup/cli","version":"1.1.53","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.19","@types/prettier":"2.4.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.53","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-I7Eh2DBJlJKk4Qch0vmIRR2ZtL5+AfBKWl3/uqMQiRVA4EOsLKJgn6wNr43s2Loar8nQjsCnE2zvX4ZqyQuzmw==","shasum":"609580cdae0cc87655e80764d8993f8634b79f83","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.53.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh31h/CRA9TVsSAnZWagAAOgoQAJ5FZ4ibemptt2V9orsm\n85t50n9vf19E/4EXraAoaG1RjeH1K8yOEGBHeVQgYmAjqKY23SVVSzOwu88K\nYuwLcDSPnsUkG4ZWfMcfpTsbPCyUzUDgzQUe/J3TqJf/hPB1JOupLN9wkYSc\nbEEVU3VIR+MvoPLbATjVtoabF9yazQBO+ce06//nucRdWPzvmAxYw8QXvvGT\nAA4W1kIBR6gpqt7jAV3eMtW+mQMnOLKZgSXaS3q995/8ZAdtT/b/sqBQSo3i\n+FyxCkJiF1p3SgzBWsZg2GgiT0u6fqUyCKzP3vOly1xHoLhOL0Wp16NG9/4e\nqhVML9xo2SMqKtxXBPIKr4hqtuSjXHlfj+98JWQbToAOZ/P94g5DKhbueGsH\nIdpXgQusFq4zVG1xZHF3SC7i7MB4WvClk04FvSJAu/hDg4S6YpIcv3B7rxyt\n03LAaR8n5BHPQtzXnYfsYEC9tFGBmLd6/Mr0Bh//RLNSTUpygpmTL7/nPSxn\n+cx9ZaCdZdeKaI95rLuhpGer9imq3/5v7Ndd63r7kgf7W7MpnDGNzJ5wJcPb\nvcJdeXB5j2LFxk1lqee4o3nYmjs4fnwO9uS/zU55oonTJVKbg0xkbflSxJrM\nvdizKzR/M7lFNPC8lPLm86Mkh2edgVjilS640dUsSF8VOwbiT3ZzZJqdan19\naFVL\r\n=cDH4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF+wYejivrKbhC+TQkcwZbnNogC/bls+RnkSpadZadQwIgRHXWpHje4g3W4S2ohRfy7AAo+Ca8/I/RAnyO7iIZ/b4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.53_1642027135154_0.8826773432983024"},"_hasShrinkwrap":false},"2.0.0-rc.32":{"name":"@leanup/cli","version":"2.0.0-rc.32","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"^4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.8","@types/prettier":"2.4.3","typescript":"4.5.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.32","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-vYiRwdeyVe8enu8xZo6Z6ixAt/wHUYXSFrNYLZwdba5tYpx/aLXGssfu/bhgxPPQklNVb9qHCwsw3UojcAWOMg==","shasum":"4ec6efe2ea167e20eb4fe184639177269be2a20f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.32.tgz","fileCount":63,"unpackedSize":139841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh31jJCRA9TVsSAnZWagAAV6kP/jC7TdVrc1QJ9X/J9XSR\naGaG95zU2JAuxFbC4iMPZIjq/4ecyec4ZcuJ6Jv0lbQ3ZqqqCLXxcHhzo/8b\nCMPz2C0dsGWDCJCwI23atP7Y5AePJfgDta7pQAIG12QIuulzPiqbQS6D7dBg\nFIruY0kcETabSNhL/+jzUMkTg+sUeW29UI/eWQf1jYq2NBjHtM4FhZTDdbRB\nCfjoALwpx59ISqkh3F9PdL9v/iuuZRmGnl/LC71LfSZ1ln9vz1X4j8BZpn4i\nM+Hi3WWrKwHATya+o14KXHWUlbn/vqFMSYThnaDLP+nyTRdE/LiW0rTpJLjs\nIMXsUk/KgOqtexgUR83uBEjU/ktfj3HqJ4BKW+gRfiewd6IdtLdIl0Tn6CDh\n9nzSXmh1VBFASWAQDZaKaILBwDDaX8HPmcdM5q6dUITs25ytwFz2xsxfo9qD\nRG95twY1A5O50YLBC4brOOjZHyKMEzR3gyYe1xYVqsyfrKhMhb9S05YsvXz6\njnhWmpgYDXrUvazL4thQ29pLaDvIs4xhPl4z/R+1qzzj2QfpbcRv/5CMn19m\ngAmGJ3CbAqVMRV+xczSs5Xa+uwsgM5+BDTTx8QTb9fuiMBUwbnsV1PT79Mmb\nF8HJyoEh4YwIOKIJCk485u5wHt4UBA25ThPG/rvnW987d4c/BVu/J9wSKDOS\n4NY1\r\n=xP+Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAVit1TN9VdCD8fXNSMzbiLV4euxcuf204UjGL5/6bBnAiA3N0KcAr2K+CYpl7y7sBoPtTdP0uxvEZhHuUiGG3SG9g=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.32_1642027209609_0.05246909884598017"},"_hasShrinkwrap":false},"1.2.21":{"name":"@leanup/cli","version":"1.2.21","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.19","@types/prettier":"2.4.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.21","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-nPM7ajS/Bk1BeUkGPKg+Oyyc7v56uIkMm9p3IOviT1u4cdCi67MEiKl00GYX+3kKWk/+Fx87zt+p0XwsH5AHAw==","shasum":"233894ece9037f93a95ffe875b50f9b2dba4ed20","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.21.tgz","fileCount":63,"unpackedSize":139802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3+OtCRA9TVsSAnZWagAAtz4QAIeq+7pm/xTq9efLBq5D\nHqefjSHGizPF52kTucoetUb7XcoO9qFJVjoBn3sFxwKUhFmabDeQrTK+NFNY\n3+sVjCS+y1Rti9AQkF9wjA9++6AIvSR2JWKZOEe2/w6bl4dRKG0oBzdj9yKe\nFuxgrXzkYhxaVDptSXUM4UJGojKwBjcij+cgjjzhD1hu6aBcc6IySNcASkGC\ni3HdgtpJ94EQ+TlHkrGAdyLZcx1R/4TedSG+h517CUs3Vs298KE9LM+FxnpX\nf0uQ0YINNnGn8GY9fq+qW0DtkjRD7cTtA3gLglwlx9gOpnOoHmVzhYZOMSGZ\nsK8EtCFhg9aqYYWy0gGOA7Lz0c6JzjPpowbXO+8wOxopsuk/QdFxqWaDXvy3\nhYhSx354t5IV9cH1qmu/823HgJuWRHaBQrk6DtTCj7r6cL2yPdvvlAVEMpXs\n0QhDzcbGIuH8dwmGYDyr5tzcunqI6lUEnGW7aBTh57LGTmc3Uyko0G+M0CMx\nBTCfx0KmLf18dPQFUPKEoGKVQAGWm0r9yECs/dpH2t1zNBGot6e676Fnclh8\nbkeb/yc3l3p9WbFy1nXdKtWRmYI/WkgqfCCRvrRUbX9yRLljFAK96Hd/keWd\nI8A0qDSIUDOAFqIuHZjchX1r/iic/uEtLdsfVnJfCj48yvFcgHkFe07C87jE\no7iv\r\n=noBP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGjpOHkOWD7HwKzWR66SVM/fFjhOsT9XZqjn9ToWOnQwIgcTWPHKcl1N/MZzMvjG4emPjte+KX+u3vxsngREQM0rA="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.21_1642062765488_0.3174404517069387"},"_hasShrinkwrap":false},"1.1.54":{"name":"@leanup/cli","version":"1.1.54","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.21","@types/prettier":"2.4.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.54","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-b/n5rs6gp4JC7YQaRCQVQ2PRbjyqkPLkPhOmPZkaURit4EQ3or13GnEMye7EV4KJTINdEQKWA/famynL6KYaSg==","shasum":"ab2395d4acfc8d5eb3039bdf08c1e0e0b57ebaca","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.54.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh57blCRA9TVsSAnZWagAAfz4P/i83SAZ+25ll/7GuxKvC\ntoH77pkI7XmJfVtgpu5sjYOeui8nGj3+g9tvQ1O1IVQ03a7XSDZV07QmJkrz\ns3TXzMYV6yhUYJocOfM/h1u9o3cG5ChQX3FnPMnZJYAbkYLyvHfgYt2YVdNh\nxjt35s/bE+6l2cCVfwZuXyX/5w2EJV7wBpSSAdNVNjcXm81TPCXgMd6GNsTJ\npO0bkg9VuRe0G+rDlueun5/Q/sbJVwKaxsm+Y6jHEF66GXcE1QnCrd6K914h\nUqQlixudG+SwuRZ0yWUv/NpopRiE299Z5X/vKHz+uH40DgG9Wy2rRHTqUUk3\nHdhii4DlRi7KaSK+BaTA1ZAseWk19hIt6uhWfeDmRIbVZiR884d3Mvd5ZYUC\nu+6D8nT5QH0E9nfPRZsXpPb+WUIy13YV29o4W0u1aczMCWVjM2H8BuRb1F8r\nhR+B3/nadXQb9mDCoNdvQ1aphCBoMHZNKiEf13/RvvnsL09WhTlgwOV6m8ip\nmOQHzuYEEVQS69/s/vQo603C/bgHZ8Rc4+6mk9DMwHGfEgZ2ZJHhaqYEofi7\nnE3phMtEg7M1MarkkvwCXYrBgDozEXE0WtCzAV1esRlxoKdmDBg9XGzTObmj\nHsuH5kfQ4nLEAjipJDwc14lSEEds5CqM+9RIEuR5X8l63DeFbg4/4L92Tn58\n/uw2\r\n=R8Y2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDwS+si1eCKk0cMoxBq6BRGp9fKWA6Irp8O4NSj6NXzVAiA2IYaGOTyKWKL/CzYtdr5v7hxyneanxaDKOrXoJ13XhQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.54_1642575589035_0.08653545049274403"},"_hasShrinkwrap":false},"2.0.0-rc.33":{"name":"@leanup/cli","version":"2.0.0-rc.33","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"^4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.10","@types/prettier":"2.4.3","typescript":"4.5.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.33","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-wvuP5P5pBnjweFX4j+UbQPA31ROCI0pLkX9yi/IeOcCdfYXvTI76LUfRJPPQf4CmDFqSfyb0W5MiWhTuV+4jnA==","shasum":"62003073e2a96add5450428704ffad0656adc9fd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.33.tgz","fileCount":63,"unpackedSize":139842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh57cSCRA9TVsSAnZWagAArzEP/RoXDUFFBI4PM5WbplYs\nEgg6zLzvTis8ve5ukb5ZOoWoZJcUf0dhvlvo/T0LV57erTxPL1iKCVFL2Z2s\nUnmL/vWjP4v4c49dggzZMUu6PJnPCGi4+XGHWpV6dKdHFrlXkBfEByoOnLh8\nM5z5eyo+IQJaUBKnxG2Kdfs1Ekokl+UZvptdOtlqUVaePCzyjkzEdwKxM9Dm\nWbF1VgfCAzv+H9r07RlAPJq8tJ5Sg4+NrD8woEuDyyQA2z/fTD4mJRAc1gko\nNscC5Q23Gees/63KL44Vt/1PiQkNuq54WLOiMF1H59vi0RB1bckO2tgRhFzh\nl/8INVcqZ98DyKCaI85JY+wcbVK0OJcsvqlL+4FOf1jMlb33ABYaOyT/2JaV\nobpYbGXHS1L4TptWqs5JeU915GdPbVmxrwzAMKJMprHaEkmp8SXr1DEznMHK\nXrR9PtB9L8p5eUNf/H8zG82Q2xuggb3RW1+/v95Kdv+8f5rko8nQdsG0qH82\nGGS98cxV/Y0TLpN3d49+GW/LNBpz0Hyz18kJzRKd3KTyHPXwKQHXtFIevi80\nmiN+zSvyAf8nFMZrtWLruNOY/EWy8gbOoAtf7C7ZzSKuA8gClfrTT86ljsQK\n9jcVZQ+dMTZTx/x3V9wFvS7AllgBQa+nhlkDKOjR2oKRoIMc6Nl9yHnEJeT+\ncmYT\r\n=Px82\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6I00zPXLutyCwl6aiSlW5zR/ptgp6MJjh3wMgTM+vcgIhAP731qHz1qzKY2sDWUeL9sRZPrd41seGzenQPJDsfqM1"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.33_1642575633931_0.4347623974845778"},"_hasShrinkwrap":false},"1.2.22":{"name":"@leanup/cli","version":"1.2.22","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.21","@types/prettier":"2.4.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.22","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-QW9VJdPmPziWjEo4wdIR/pD8CsyjWGLSoqJdhkn/w5efgpMTfz+gWKLoj3ncIhJqz7zKz7sCir78obWWfMtP1A==","shasum":"c0763205a6b0844a847d073babe5d3ddb00889a8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.22.tgz","fileCount":63,"unpackedSize":139802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh57vXCRA9TVsSAnZWagAApT4P+gMkXrcj+FlKTmZfz/VR\nnfdELqJXgV14MNT1gENViATIz6JZsTp4xG+v+GvWEPgRFQxBjMN+iPycuAtc\n9nQJRyKbr9LVzQXFeuM84xYPyeZtHoHu4o3E3whRxWo1E1lu+0EAC0nbwkEY\nd2zD5QxYFyGD7l/t3ItFeXmEBAKez1f5WfCLPgu7Voqz9f5QpX0bNLRB47A4\nwmFQ56KHOnrYlju8HhlC0dtvqeGQWijkLt/fugIlo5xOrjszHvo54hVb2V5r\ngqEj/QuvLnP4BAvXSxeixMztxM8NgDdHgqlavsgbHEEYLLoN5I0GcecbV9hV\na2FWywDAOBUwQzOWiypo0ulzHxbKfcgqbxcOaTL25Iy4PwiG25eCXkHduVdT\n7O302OPuarpDTLWNt3DNMMwrWr9AtV6+Ek2xkO6/mV5S3Qr+s0izCg0ygm98\nlaqLWHlCzkc0cKD9D9Z8GZp4MMjKH33WVMDhROGHCpwgU+WsRYAZyCO9GJUX\nhhG/4ZduXnogDv40wB6XGUFkpu7C1Vgc/2Dzu3qIHruziIi4oqJu0fmtwZPH\nC5ULx0hsmj8fWFMzbK/ns9Ry6tARpWfg4cxWQnCnDbUFHwH7fO/ZDIC6GNC/\nryp/X6sc/dGCbKdX+CHdj0wYy6gdanXocSZ+a5tsNJpyjy1brl3XnfRG5Tg3\nA7nP\r\n=Cx+S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDABwPpugYJ2IyESSN0DF58Axc3IMydRrynYk6vyRC2XgIhAKsnHVucQYTtMp7pcRvF7/VW2bG6r+o/ibxcKZonUBKI"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.22_1642576855386_0.37849500955472215"},"_hasShrinkwrap":false},"1.0.161":{"name":"@leanup/cli","version":"1.0.161","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.7","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.16.7","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.8","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.161","@leanup/cli-core-format":"1.0.160","@leanup/cli-core-lint":"1.0.161","@leanup/cli-core-test":"1.0.161","autoprefixer":"10.4.2","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.5","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.49.0","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.1","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.161","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-qWJgwnLW+a4qMCCdeS57Xpa2rD1uct0ZM/xsXYuEONCPXBmTu3MHZ66V1WXJvJ9fsXkEb/zKH99H59MnLQ3wfg==","shasum":"2d3bccfd5c1461ece86ce8c3a4c31b9b3d3ea0ce","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.161.tgz","fileCount":64,"unpackedSize":152160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6i/7CRA9TVsSAnZWagAAOBwP/iXZGo5rNJL9RvIBl43H\n2VPkx27tPiyGB8sebzctJj+fJAAvMyjNxsk5x2GjG0W9Kc08njB9FeNDhkUN\nRO/8lKef1dIXPERrpIaH9QkoWtA+Brr7u8xGReZ02Q0OmmnEYwCipZtVWqQU\njqT6+dlClSL5/dLgYX88o4GaaT/qXmw/YEGfpTWlQDLg5bqTPE48Zvt3gMf6\nhbG6QamMy7TQyeqlj47/MJf2WTAC7Ytf5aI3ZUYFOyraFwYtV0MUYRgoc4Lg\nOwBjnMhHD5rn16PvpsiQ6ewz4MeYxLyin04TiMWA/bw966RAxiC7cTXarV3f\n6RwWzM7CUcnd9iy4bE9jQCwKX83AdI1Nd4ZkL7LVT9BDvF0vCw++ZahLrlUh\njWlsP2KeEYQoz2zORSvAFZgHaKU+aTSuY1BxzwGzPIOHYfsG/9STP8A4YeYY\nACoPhxnby11ZufHzaha5wS+NcIBp6xBWLdfCMX6iqZqNz1EArF9MyxxRh8CZ\nUuxcTA9/c0bvm/qIi8415fQLnjIyjY46iUjjbeeXVgcgDNfH9g6UwvQ3r9B7\nNuquSlshlHpF8UW+UUqETkCnzBuge8HqxjtNvK4fSGIf0rGbVKmz0alRmhz+\n4bSvri/26IUM+3OYkHHuSz9bJKBqMw3PuZ6vtqzzEH8YrifCAmGp63ggOQe9\nmz3b\r\n=z/n8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwdNYSiHrVwZCl3OR/Nu8c+zkxYgmA1r8Lw9Vbtkw2SwIgNiavpfjbrf60e15zYy4YTQ6yVJzLd04jlytTSJUla6g="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.161_1642737659498_0.9883497798089429"},"_hasShrinkwrap":false},"1.2.23":{"name":"@leanup/cli","version":"1.2.23","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.21","@types/prettier":"2.4.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.23","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-1R2f5YCpOHF6mkCdi5MK4arGaQ7p8kJwLNwvwmi3su4YtHchuZD5bNvnn9lNdwXl18qX79xxBMdwKGXDAMhYuA==","shasum":"7de441ba592b0dd88fadba6a1c8084d3197c418b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.23.tgz","fileCount":63,"unpackedSize":139802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6jDzCRA9TVsSAnZWagAAGWcQAIWHBbJ0Y3tyHWgGLwXH\n4U0g/5e5MEzJtfTAm79EBEaG/ouYQEHCm5P4Awj9lML6ZQoBwuawrRAuTVu6\nGQmAYc0iAgSwekidMeTVzpRgiYhpYvs+Q7vNb1Mu+4cOr3Zg6ytu0PI3tNHF\nmuM6DzKeemz3gkPsA0cjBLNbRcjrWGPFkrxi8x60OnuUTalcaTw1wIhuwRnc\nH1LXfnnrylb7FG46G3nTrEJ/BGuLqFZGM3m9hkf2Ls2vM0bh2HOsfP7K2lrs\nNNVQGlIiGb5u1cy6JKyEY7CxYFYoB6dYYhjpvRp+/anKlCygbExK4KT2h8lR\nibBMpIGZGi2AWV4rV3vLxyOvONLfPKpTYsVzBSBJrgd8vrwNll/nfsBTcR0R\n+8R3Hmt5mTZ5H43+/4dAeyI8l7FKGmThEGK7q67Y9H+rAz2S1rg7N/JsdbTT\nWtbNq4pyp+eEIz8g6nDhdIM2eH2EzlTS04iireGDxVoFgihkQSU9a9c0DGFd\nBisf51oCtilgH/SzvOy8vqbbrMMeCw4hT3ODDyNNWj55lm0V+037/O01Cwqa\nxu823sTUIldDYtZn8oehorMTKDhpIYuKSjPLVqWsIaKJv2sUyPu2N8VAezq7\nhTS/2tyxTUe+IHTDcKL4xpUsWg2nF5d3ChQMVNhbUghm/0PqDD1YZ2RxXjbj\nf35d\r\n=XYJY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7D1VpajmPhx4B3Hpi4CAjwKuWO+erbzms2uMfXaTlbAiEA8BXdrqnvH9ku+oek0s3dY8KzPOGLn714lp9mErLDq1k="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.23_1642737907065_0.5853321288128572"},"_hasShrinkwrap":false},"1.0.162":{"name":"@leanup/cli","version":"1.0.162","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.12","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.16.7","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.162","@leanup/cli-core-format":"1.0.160","@leanup/cli-core-lint":"1.0.162","@leanup/cli-core-test":"1.0.162","autoprefixer":"10.4.2","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.5","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.49.0","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.162","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-NynjnCMpnodQ77mPZloGDocMfHcauzRTHynOJQhpLyYyeWi74kWjoliL/wNqEslhw7h2uKKPXJZHG40Xz6GGFA==","shasum":"8c75fe76a4dca77c5f1720f017397b9f1d2a2dd5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.162.tgz","fileCount":64,"unpackedSize":152162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8aeiCRA9TVsSAnZWagAAWvsP+wcC/L34rnw27YRNF4cR\nArfB/pkjh5Smno+VH5dULG0Q4BK+yaarP0gJ9cW47+Z2DAFKYLDrtR/o4PXd\nmQ/CcKpZDIPwlGihqp3jWi67CGkAAIZ0rL5M1eI+O+vt1O5jhJL2CfikkLEm\nZOYuZCXk1akZW8Rgq6hobEeLnk8koRUcthdTxKdS6mVGllkXh6BfuxjeDjtj\nccEbr0cWz0RxqiOMT9AiGWEm35xzruTbScuaFOQSqVp1dHeQ9dwInJfbOCGa\nn1V7jGsQQrNoVHGVevhBzZLkC5moWFXTRC5b4+E1lT9ArffnietEK4I0QAdB\nD0KQ6yq4gvYP9nYl8wKPr9rlaERdGSwda9MWysJItDkhcIi5aHQfbfEHhBYs\nwin4lAag1x6FIVm4BelhjMqfu7xQRmJB2A4t5T+mxNTIcXo1ICxMN65idOd0\nt8A5bZ3NrJryrJsuDBEHTVclNk03qGRYkTpD/EvQ5nAFwCqWwzMS/1MUcLZV\naczv59lSr/vPH5ed2QQc3094MRI7k8LgUbzJ08939XzpHY2JnJWoNNQfGYvd\n8c1OI3mc40V1eR+N5CWq/ByR5qVkqu6q02dZIh988peu6/q+jFgVJwMCJN3I\nmsD0nzHLUgYervI5yXWErfDENQwGK9tI/ogICvyCA2ao7/S4UnfsY2kX+Ml+\n7B6G\r\n=wXJO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDckieNWolwNBdMUHp+KQcN42q4s0/tJVuYyMIxKlXZvwIgPtJ4BRoa3p13hKyeFUAD5UMQhLXyhM7rgh8huPAutRQ="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.162_1643227042355_0.6953332112801616"},"_hasShrinkwrap":false},"1.1.55":{"name":"@leanup/cli","version":"1.1.55","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.21","@types/prettier":"2.4.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.55","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-NkD3lKW7e+Y2b10BHT+J36ZSW+fQj9JBFjMiiLX9U4ns9KTndHFRwB4mYYZsMFB8zZEfkcEA4GtcpFCRuFSwUw==","shasum":"894c75fc8e00a7ae6e3038b579c73063ba01338e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.55.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8afLCRA9TVsSAnZWagAANREP/3gIOpDaI+LnvvM9EfSH\nOma26aOjD9YCxQPf4Tr97s0Fi9x41FFfefwMbNKA2uTZnSk5m+bfXolxNQuM\nlXIWyyAg5ogNW5iUMnBptOPtlg39rlVdf28GK0LzrJg2p/2R69rEq27MpRGW\nKvouKEjrL08oS7qIGDjDLWB0z/jZLsW8nGhfRR7y820BDeQ3zZ3MeczLUhbL\n9zcl1cQ3hssXp29aH3CKBJ7RfJhzb5XNvSNQpsaSDlewyYXYBR+DFcD7GP2W\nEKy2rOphXOULioOYxzPb7cxBL9Do7rzxUIjVNruyRgHGIkjJjfAtb3xP5yO9\nNFL7847Pey3np1CIQFqXB9CiXWmgkqhaP/Jc2FUApaNjINGL2nBtW0jP/9rv\n1DrrzYq0qOKS4kd1c8tf+8phSVIk6eCW3/ZAum1HBBnVjAgJcuPCKe1EVM42\nRqq/BeTxmCyP1B1Yj51cy9/p/i+cr26RS6q/G3DJEAtakN8XXO+KJvw4tkJG\nKDw2Y5JdN4DfQcqMOytn+t0RiXdN9LgsQuZDFX+SoVeaHpj7p7XW+LA3YyDA\nMxmD6/31XYQpTiU3BRP9wLnHC5rfKHhiZL60UjYEchdqtBTdsmnauvVw1lUx\nG5SeUA9B+dYt00Mxu7A/XSMWPgs/dJHIrGj4ntrzOrBgHZKUZlqCj2bOBD2/\nAUNo\r\n=CU+8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDn1fKkQMLkPlH9iWz+J8Yrtu6jzzhbrXJpeUgT8pYJBAiBT36xM9PisFuIfYy/3U220BDjsHHa+IZtHeib3eQkCuQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.55_1643227083817_0.8871173545995015"},"_hasShrinkwrap":false},"1.2.25":{"name":"@leanup/cli","version":"1.2.25","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.21","@types/prettier":"2.4.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.2.25","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-g78z3qsGC5UAb9YjISu/uyLc4vequgkjCgD5ulo7qf7wkqpj7Z6LKiZphjzDsPrhKCXnPItWbY8hOPMeOeFmug==","shasum":"16318d73612fc470d502b1e8e47e2b803801e1ba","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.25.tgz","fileCount":63,"unpackedSize":139802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8agiCRA9TVsSAnZWagAA6eEP/3n5elfekKnZzdimTW5T\n4kU4m8RSlUQB7EDFuNPJ/ymyay+d6q29ROI7bLaMG+e2WS15dOPaOcIrvQc9\n3NSszO1Rp2JI5QqCdoGL32EEmNLVjr+ZhoDWGRoKi9udm/tHBdGXRAfsscxj\nkvhgz21eWE7dzFCkacvKN6hNfT4rcFlZHAsHHJ8DZKmJSTx8pAblzEYDKGx5\nXLxONXKcuX5ko0r6K7DX9GM3DkYIcCn90FFjsS/3cHyXNz3gcdH+kaUDe+hS\n/gCIt+9OcGeyFPu6jzO0WeSGpaJp+BzbdBUpA0rQQqk75PjBGPuraMt2fpo9\nba2ni5GNYUe1xozUxv36o/rfVGT5KrUBfA6vY4GQdkUq0WiBRFv2Gr/D+7Ft\n8fF+Bqq7XqMkhOOfgnZBepO1+InNrYddL3QBwswOSvMh+bHCyqGfVEHqcCg9\nzImMFafjlD+hFEAOOiWhpxal7kWTQzsj2jVupicIlYQ69Nz1zMl/PZU5QyNC\nNb3wSi+ujY5YAESC9ByrS2l6qm6tWT6Da18hFiKfQLMnA1XVNNeXbr2CTPrd\nr+Nja6JxpxgdIKZGbtj7Zq/2YfiGsKiIljWi+/DgxPK2tvjTXv4yLTLmBARO\nMfcFqACfXw3YeqtUbsPFdr6+Kf9HEPgpBkikWQ/5YGMvFhsfzmUTIDqu7L7Z\nfS1M\r\n=Qq6i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICh71RYF31WzT8axuk77itTCxXQxV6P7knmPH0qfe4MFAiEA9bm9Bj8knq55cc3K0qDXvilxO4tNY0+aN+2Dd99GCWM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.25_1643227170352_0.0018941929459153073"},"_hasShrinkwrap":false},"2.0.0-rc.34":{"name":"@leanup/cli","version":"2.0.0-rc.34","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"^4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.12","@types/prettier":"2.4.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.34","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-wPEyFFSbOPzWVfI6n14JPqRWB40kk/GO5FCo+gj2XKZsxPK4seQRGEAWRtygXuV5tLWS7cwyHI1Tj9m+U1TSZA==","shasum":"a3300b67dceaa33a87d459709c4f01e2d7d5add3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.34.tgz","fileCount":63,"unpackedSize":139842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8ajTCRA9TVsSAnZWagAA+jYQAIn1gcpj11A9lbSAmUB8\nnXbiAcRqP8IctgSbw6Eu/8FrWRP7zqJ1n0XyIo42oTv5Qd6Q10EQlFwvWtS6\nhWYNKYrttFSX5ncIIruzDVNmUKagqnLexB9281wwcm57EShVImAypUzhMSjh\nARug+Mp9Y5ClmMQByVAp17wX6EcHNNVBiYOrLPGa/boRxlqx0/sGXDEo0pnq\nwm5IsLX+kjCOnXAshAevPiWPd7y45SG0v7Z4ib2RV2+Pl8cQQtBMHUfaPaVH\n62/VKCOJuxwp/jvAKuOAhUumPDfaWZgI7ndHGKM2oFHjt+WXlaRsA1G3Nl13\nz2mwouoadoV2h98Guj2jve1oFkJmv5W2qskQrJiouKtJAbmXjdPJdHa5RIoe\nO3iFBYPEoWmf40WXuxq8mig7t5PHyygI1NPfvSG/gx7VzqMWehXk5mBa75nN\nBtd84X9jluPR685Gmn6Qzx1cJ/VYrm1dWXskQMpS6i3+aePoCBvpEAcCMe35\nbs3ZNttxv0zpRRAADHeovO0nzahQgjosbzv+mSu92zfmtEXxaauZgHr3Sc5K\nXp0no164txqLoG6fsIj5YvY6idGVEXFeqoj9CjJycBCTGMyRf/Ymres7ixYE\nMQkIfSRm9H0rCtvBT80AlC7izDQUHtfYnyKu/ikqybUJqzel4i0M1OgU6vKh\n06hu\r\n=xk2A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIn9l+cFq12/kq14RFI1bGlHcGDifenemUJfAlTKXb6AIhAKAyxkr6CYRpdIJazEZjggHZZv5JVjk1HC3m+DjUI+Si"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.34_1643227347373_0.7690381829030355"},"_hasShrinkwrap":false},"2.0.0-rc.35":{"name":"@leanup/cli","version":"2.0.0-rc.35","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.13","@types/prettier":"2.4.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.35","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Usem44anG1sHTWtsg/PkVOy1Mdck3vJlt59sM32IZeUHBR5dOaBe6YilsilEf0r+s0/7bzwgQT5i2cH+Iu13nA==","shasum":"76b80d91295664fb249dd8331136f96c2b0c17d9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.35.tgz","fileCount":62,"unpackedSize":139780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9dR8CRA9TVsSAnZWagAAYtQP/28w4FNStNmWRkHuVBzo\nz9oMKuWeKVWdA0pFeexylILUl1xtys0XP3DHsPNEb0jGtIlWZP9ChYHVXZBM\nl3HSdFukpQmeIBMWIuBzeSTrOpomCSVa1wl6DCicbTg7Z3mkVDI5QnlFR/Bf\noVc5NOy1Zott6CW2JPKUILFlTn24hkAhI0A65FAKFL1HkSYW7KTNKAMHuvVu\ngPk+mSq3Rp6K7Eo+5ffoSCr1cnVr87P4lVUCMnUIzwXA/QZHA6BWXz+m4SeX\nqQXwiWn51ISVJdsOlhYexKxeJU1WxA4CXRRsvnOK9ZqHTGMrDMyhuJiBxPCJ\nqf19sDGCdhirhlePmXvkiZxgO1gKmbxqR0xN5D4E3JP9Azz7AnmjqAA7uo6l\njoxTzEcZ0dEsmwWMeClfxKjJWnLIZjpcEQNgE9QYaRP1Ek6nN/o+/0AAsvn/\nU9oPMUF0Q3iX0fpnUxTC5yQs3q/EDGZx7EQv/icy5QzHPGtdYSPym2hwMkJK\nSe4l7wnv/wBHdz15SEocXKly1Yl2bcYsrkgQudpaVjfpYQ/v7WzWstkKFMIH\ntmk+wtq9Q/rhATLeE59vbJ6B2UPje6gg00jPOmK6BcQbbrweH/4sao+V5JFM\nFPyxNHB45y70J4E1sY8SrHkfnVAFfczfVJ6dGN+WrX9LaEm02NCxuSEZLsrq\n/pCM\r\n=odS7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBs+MlPdmlt7w7MKLsMFTZnHNZkCgpEKNpz91jDw9wUIAiAxxjYJCcOhS7yxGJagifSQO7IErHX39DfbOmSLQ9rkBw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.35_1643500668204_0.38446056564649433"},"_hasShrinkwrap":false},"2.0.0-rc.36":{"name":"@leanup/cli","version":"2.0.0-rc.36","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.13","@types/prettier":"2.4.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.36","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-G+lJMBYlmwu3wAadjmKL8O/bh/Xjqrs/HvjRmIoupkGKrxGLFKnDxp7G8WmhqxKQhGpffPTHmS4Uwa5SuVAUwQ==","shasum":"341d2e3e6bf9fd55a56aa21cf8b37839b21df69d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.36.tgz","fileCount":62,"unpackedSize":139785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9xSwCRA9TVsSAnZWagAA/NkP/RAhoEgjWfnVlUKkFOEj\nj6UryC/M2bwUHuR6bFQY+N/9K0iuC9bGCsJaQ5zNpD/FsPANQYBQmqsmEs7t\nE2KM4xI4MmpFS5yTXxYQevVYlcagggXWleveyAjVlHClWl/2RxBwEHGjbwAw\nR2oqX7tt47T8qWV+tCh5M3kM1yhFiyC3wwGrpSpBR8ZuGntT6LXeayaTAcas\nyoTUGtq16TmN5pKT0D8UnFWZFDctlEoNxTa43vgtBU01cLW6X/0fyYT3mSjb\nrIBe1AQ+XFjSURxLWCD3hmfjh0OcXM0i16dkipRVnPfpTHqXp8Gw+dIPjocn\nMlWpkYP8BAa5XvvCUDUuSQ27gwrGGiL9KZX2T40wqTPJwqbQ501Rk3tnsbml\nsveZRApJvhA5APdxbL+bMxM5MufkHvU5fm/ezo2eFqNw4MrGlWWTaa2NEnt2\nTZBi9nUOQ1SCxFQtSf/KEYgTHpK6QFDlP4P7u1YWqLdiXnAwwZ7uE9yPPmyP\nF3mwM5NaHvh7hOZWoVt77rwMLoQuBQnFWGko9A2wDkxqM1Qo5a2hA4SAd7s9\nJMsgw7CS9RtPfPKMDO1+Vf0j1wsrv7XVW7jfwXiUzdN3CLFE+boN6pwEpcaA\nQXTmvJEH7k2A8UXvZjFeZNBUflo6kbRPd/rYsAHlg9G9LKd5xw5nE0WgeBJf\noapr\r\n=qlO6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBjVDC3/kG4pPD23XjMrHDdYj7xdDXQ3w6IdPVjD80A6AiEA/vRoFIGbkklTUWZskd4r+XwB9OxEZ16R98wCQg+mRds="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.36_1643582639804_0.7121615517125413"},"_hasShrinkwrap":false},"1.3.0":{"name":"@leanup/cli","version":"1.3.0","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.13","@types/prettier":"2.4.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.0","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Z3t6z2OZJTz4HtUTsT7S7I12zsueJIV0qkBKHIMzKX7ZKiWKvU3pegg9WigSdZlIDLEEVx1yRbNyx1qC5MB0ZA==","shasum":"ceac64ff96766a93466072cba5d430478fdc306b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.0.tgz","fileCount":62,"unpackedSize":139740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+eprCRA9TVsSAnZWagAACdoQAJxqhJxHR3O8MqPSzJcG\n9s87WCNmieR2hsd5MpVLXVARgg1LQRtGMLJNedohk7sH2IW3n6aw9ulbMdJB\nNkuaweIc9r6XAHQAaY+JjEc6vO3PBhOPM37VObunUbQFtQxMhbEDWSRE3eqA\nx0UL63T+BJI1PHCHq24H4mKXbXBGaPr/TSXMG+eu+fnjNiyfUjVft6te5Y6A\nWVA9eilYeNRgDaNYI0iyjj3TrzISDNVX00fIqcsUyEyImAIGPOi+3vNkpPnT\nrVR92+B+wRTpkQP759EW+c2Z823fuqSG83aoznhW83mqyuO0u9kHZv14IAYE\nQaY1oeVYPMBNwzXTEWGizh/+z/uW3gdUiThzD9ELu3+rcVqgPWJiQEIeSeJw\nN8DDNNvh1Ek4sBinB4PP4O7VjQAI7mg5PCOKH5Xq1QScrzyGE2c2w56Jhsq9\n7dxHxpAJ9doMChZ42+whEo2i+wvEQvm1PiSAkLjX0BUaCPKMHXiI9kNKV/RR\nrJ0DfebqS+E0IqWoD/1PC+xeV+NO1P76hPou/FzowY2MS/IMUg5lx/aWziY6\nTNifENuV5pE2T8/mT1LDdTowXR7i6XbQRG2okBFqEjGzoaZ8IypgmHXAORDQ\n+1KZa/c+c79uvTC1b1w5HdiZkZP6befkNDjHaTTOzCTvzce1LGbAthC7YVjK\nx9Bk\r\n=wz+E\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgMVM0ons937cB0BMKD+CMRy+mlt/LhnVFPmqe958NTQIgPBTtQFolbJCLHdb8oHxh15Az/W0jdqbroFzGLu03mrU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.0_1643768427717_0.2508484345454933"},"_hasShrinkwrap":false},"2.0.0-rc.37":{"name":"@leanup/cli","version":"2.0.0-rc.37","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.14","@types/prettier":"2.4.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.37","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-J0OwgiHCQjnGlAx/ptnODmygQVE9eBtSQdxWdV2ubqlmpYWuZeL1VSxERIVdVVAPvernlSDBQRck+dj3rkUIdg==","shasum":"0a01b7d386ab004d11a3b416081891eea2b37aa6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.37.tgz","fileCount":62,"unpackedSize":139794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+gxvCRA9TVsSAnZWagAAxOsP/j1kgytKhJd+TR/Fu7T1\nqZOyz5SjcWbK+fQZu3lXxPIS1RHa/3guQOogUzlXG2PuQ152feXCQu2gV2lw\nCHV1f5MqxEpdppP/VTY/nqZxU7RMyafeUM552X1nJq9WNLG/2iG0i7VuiP5G\nRSvoS2Wk9rNnt5JzsXVjvYsMza8V0OeHo+f1AAZa+xAUa9I7CGWVzPRHICt6\nzQ9X1HS8uus3oNmLsG6bmjhN/gtp+Q1cARy1r92y+scOrYhl01uJ5knwlJdG\n2onwjTiHX7FulN/Do5TiXjwzXXwyfD381YcRcOswmNAfQzEwNXwONbTUo9mx\noGUDNQxNL29T5FWXGU1f73f8niooTpY7It7rmzMApiMRBnqMG1Uv2PxvBJ1Q\n3EBAHPtvbYh1gSgdyKKcfbPMtsTzGIIIBHYygKadFX/qDBo+WbNMQ0cAdjdV\n5ejUemE2mFnSB6mrHxM963C5VD2jBqkS28oM7ETIbrYmnT5w1sTLRjZskujW\nuik71PgJCOSbevEd2icFf72wXE8SG6cyWf6SJLUE0EYRkTzNp4zhpkdgphfU\ndFGFYlQsaWbrih/OyEVtO/6c+xZVJkFnJLKrF7PR3zVd7luPOUQaW9JbPcE6\nzAkM5yEBNOgs5zuYMQRGaiRJYDnKpsid+KXAHegV03noLqZP7f6G9bIo9uYq\ngXgV\r\n=JLqT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDl2c8VDWuHZx+CgcuPwAsn53RSFJBEm4NAkp/EzuOQ6gIgKQN1sEheZebbe4RduRJiGujaAD8PYr81FuTEJHQ+9bs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.37_1643777135747_0.9493769696493433"},"_hasShrinkwrap":false},"1.1.56":{"name":"@leanup/cli","version":"1.1.56","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.22","@types/prettier":"2.4.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.56","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-HmT5l+1rR61iGemZ2Kj9C/O6uPKn+OYrdJfJx5daFKTEDyKO8emQAgsNw7il1GYNaYerhgSikH7QpKGyP7k+4Q==","shasum":"721d745f1b5554ae5f643f06376d8f7bbee6a2fc","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.56.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+gyKCRA9TVsSAnZWagAAMGgP/AkrmcZ4EbCgzpaxGQU+\nS311ofLwjeEjx1XYApAzFR799NC2NxHJlmIGiruDzw2lEMiRPOnW+w0EOCWP\nlpIbsYXgQUnAxRMTvwDw63KAaCPg2NKTVd7r2IRFcB5fcShVPcC21ref2H4k\nhhe27+A/7iofoRkVRZGhxPoa6gGiOD42BNVXf8AiIFLrWO5555oeWrjVy5V3\ndSEyHq2CPJk3VqBtNwp5yTf3gtM4K569NJzNaYMI6LKUZasLiN/WTBVbpR4+\ns3RxtkZxJ+TLJ0OGnNXaO5/qjTRnmBB+4UcyS6f6A5RE3Ur0f7R7ac40nnyv\nF5cbie8i+8wJV25Q+/rTpF6dgHe7HfcSKvPcTQqWEJwVdPZ6WFiT3kBFaEnn\n6GPtdsel48kghAg+VBrZoURhE6k1NrBVPbveUhMOriwR2rJBFZlWBCJ8Vzlq\n4reqMF7jNoTlyM9B/s/6G61z7Iv4ZSxgCMN5ybUvbjYNJCL8oiY9ZKl2i/HU\nIWJtpFvYoqsCEY4LAxbBjoPWQZWxa3c+FWoBlopJYYEf5Vtzq1N6ZhP+X9pA\njbqtKP+7QbafHr1+rPaqTFjGt0LiteBkWU/gtFEiEUVTCfaoYETwL3IenahL\npZJ7La9fQigjBB8ipgd8p13VfoKC9y3wreYGRdcUXurNRwDzzYM535Ijn9b6\n6t8h\r\n=UZS3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG98vDXVw3B+KS1gQZXZPXU915DBitL7v8xNwxYM86kpAiBfK0xcW+YQkhn+nPUKc0/swxH/TjhTQR8qk5x+bXp1Ow=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.56_1643777162100_0.904275782149141"},"_hasShrinkwrap":false},"1.2.26":{"name":"@leanup/cli","version":"1.2.26","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.22","@types/prettier":"2.4.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.26","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-M1AbsRNl5qhY5Nd42iWZhpvuyJkM2FsBqSahL6riNn2DN3njmvPvVJuOctQlzGMvgyu0ZwJkYZFIilx4ZSi+xA==","shasum":"fc5c18893067245a3959abbc2a1226b5e08fffd9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.26.tgz","fileCount":63,"unpackedSize":139811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+gyuCRA9TVsSAnZWagAAl9wP/iTxmf1BK7o79I2RnbEr\nHcC1TmuwttP9xo/pD5RMpzSOLOqBgX5o71oWbUlBQ1GSOuK1HUnkyDaHPBpH\n3Z6TNfRpQqDiuwGWLNtcvjmkUGOuIaSc4aecUgMV+0uXQUSQsX/6va2EnN6D\nnesLzYW5LPo/8YPKW07fHhQ3Abw53QW0VW8P+aM9CWX8CX6ayvvm6Dh7UX9o\nnQXNqLjZs9AB8jkbkFfArXpNALs4fLPeCbCVCyptjkaXoQr8ZUw7heBEfwuX\njgn7YT8W7CbL87PK2DlE1kOyL/v0QsigUGxRyDGSUL/oOFXsg+H7zNxVc88c\nf75nE064+8ykj94nuGVPURuR1uYWAfCIPXqf3+83GmziUEsxgutCkJim7yi3\nxgZA72zrWjsVWBzoqwdy/x2QzsvGy2kxOAhykG77gjy8N6q9AEL9ZD7ajsKe\nLJ0BVoZGqIu8pUPPrYIHTzNL4Ew9ugOHSYvNMQwx2aw5atuu1UQkQ8qd0PYq\nRDTnrJkek6OK45ohVVVhBrTk6rVrBH2S/hBPeRsADwqH/r+46pNOFDIo4ISS\nS0tm5g9RBfdVhOpkdIJhmaWYmyhuhPCSPTeJk5YJehUnUxu1gv/xCdg7nk3n\noe69Ye6VAwzVCRTIu68uvzdDYL26ZHro/POyEJTaj8cMbcAShCgJoucXbwFd\nrrCf\r\n=X6JA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIArkNFwwLOCU8VkzJ8SpeGAo5V872+40Dy07jDoA5FIxAiAxZf1TSNEui0fVUjN6QQ7+akjQkGilWTkEl2/Dd6RAhw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.26_1643777198663_0.06550969771175708"},"_hasShrinkwrap":false},"1.3.1":{"name":"@leanup/cli","version":"1.3.1","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.14","@types/prettier":"2.4.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.1","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-yEbk0YoZtW9RsM+76KBaEtMBhw0NIX5YwE2ijHP3KORdEFee83Z4akUMgRbMZIZhR6A4DGOCSgAejA2caUoNHQ==","shasum":"867b29f1a7cf6704159ce20462e67ef01dd13815","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.1.tgz","fileCount":62,"unpackedSize":139740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+g8CCRA9TVsSAnZWagAA1b8QAJpN+h4vqxFAqTVMfX6b\n14C4OJSkR/2kOgMqf7dxAd/uukzzV1Jgy87pYyR51vWh+uqrET2XfAKocBrp\nHkVpU6WpXDe0ZrvZjTND6NHLFx7QKq0WGuxMgxUsO93YGhVA8AmzDaUVeaX7\ncEmZeE5nQUYy4HjXb1NfZ7iHBtsFTWJvHN2+r7YcW58+uMMtWKc2s8od+wLL\ni8bjpRTj3sImDiUx0AIxVdmU8Vsk5N/+jkNZQPWamykjmJxblNFB6gjBTINQ\nOT01F6O5LW6O+hqicmsy6zio/4E+AHfoYtW3c+jVbFKLjwRmTzWuhj+I28uL\nK/TXllbYu6FGgJQMx566xNPF9H3iDyVMzKOiz2833SwoDiSiItH14f5J8FpR\nc0GI07uWRytP2R9da2Gc9KqLsW5EBXQLmE32PsQ/kB/snLHyhRlk236a9ltI\nnXAPK7+gjhcYyFCMB5CszdBcp+xxh33l/ARWYABx0BncPbckGpSFQbPMTftT\navri3I2jCSvPduG3srJbnHUvVX/gp6FTOIq0p62wf1MVfZ72wMeGLgTkhKEY\nIs2JvEWSuexc363KBASrjMA1n2FTxfQFBKVlFGqvmQ418WtusUsuRgIjHvR7\nYYTKg2ii/VY0XI5TtvXX9zxOb9kXICJRbMcmR9jdUtXG8EnashPx82x2mRyT\n0D00\r\n=fPSq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE6nnvxaFUdRFBNLJK/uS/F1gCaM/80UL4YoCIQyB7jTAiAslCt32XN5LUV4V5RyPGnm+cv+RBSJTHNoplRpJO1uBw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.1_1643777794809_0.8814634742720762"},"_hasShrinkwrap":false},"1.0.163":{"name":"@leanup/cli","version":"1.0.163","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.16.12","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.16.7","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.163","@leanup/cli-core-format":"1.0.160","@leanup/cli-core-lint":"1.0.163","@leanup/cli-core-test":"1.0.163","autoprefixer":"10.4.2","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.6","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.49.7","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.163","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-FwH1nALHjDx5iVjgoW/huSBTMET0Lv2Itu7yw8HtuBJUo1DwLjSr7EsdbHEteO38yPtkswu+YfaT/73XZkBJmQ==","shasum":"fb01a98300e75f7bc83db075236589f6c797c55a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.163.tgz","fileCount":64,"unpackedSize":152162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+hBwCRA9TVsSAnZWagAA1ocQAI3V+VSa5BlxVBYfKyBT\njrU+unIMJOqurrowX/CO6+nPzzgI2q5PS5s1xln3Ncf74RvvXS1hpIjKIdEl\nfOQpqb4R9RJzj59RFaUCMLvFlaq8+5oL+fz9N+R5lUaG/md5BWsY3/xv4oJT\nM2utVG4FElNYBMRXVvc6eZep4bkenLNbPe6NV9TP4Ju/WsBCjltYo3HIemRy\nOG0/Ui/Jf11mtXC60X8+5ZqmS0XuPFo7lLvcumiyoSKviPugEXjmEC/Kuytz\nGRIKUpdlyUuyDJC5pW2d/biWqSqvfeyitzC2FqKgoxMQFtx2PXwRvbIPvwgw\nX4nsEGNDnwtldf2vee01v7z5NmYeVGl1rz1sMtNBN4IyXfMsOwOqQv/oDzui\nm6XgqJB/9+dnF0V3Lsn21FBvr1HdsimnYwWYZQITPm3X8GPGvtwChVcGxglo\nhmdjVHIavtxfsJT143GUyeu4iyRj6PZKoa8uAI4OelfkG25rr1hJG35Mcrcv\nxmRCqTh//W4yY8MHWxHhU3KXOJU7vtNJreOpr3hHWAo+0oTd1NY3cs9woNpk\nuflMGM1NQki4qXru9W0Lhn7ajvmGKB1YPgXeCUHN9VNW4cVb4l4zegyoPOgn\ncmIeUNSBzXfjw6rYjTNZNnX/XHL0cYQfgy3+4WbrIWTAFjX19HavMQeMFVsF\nUUQK\r\n=cDBq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDApiAbjGEUDTtmhJ7TtBWyZqTgsFqfO7Pq69EGsNlzigIhAOzkLZrKnCYG3R/gDsTpp84TQRU1rHlnNphW8tuLIzF3"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.163_1643778160366_0.9443476076844073"},"_hasShrinkwrap":false},"1.3.2":{"name":"@leanup/cli","version":"1.3.2","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.14","@types/prettier":"2.4.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.2","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-bMpgpFvoBPNA9nlR23z+sQwouh4F44SjlB0+vAnt3BclEG1hnuQm/gZW9r8hw3oHiPgGnMPv1Q55UbATd/efwA==","shasum":"75045b6688ec1816f2ebb3e36f6f15ec57e954b9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.2.tgz","fileCount":63,"unpackedSize":140035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+18bCRA9TVsSAnZWagAAHdAQAIyrHSnEhmXPG0VNtPCF\ntLUJiTj3U2TQwW8cyH7ev+uLVDY7ddqZ7WMdHgN1FBLbdA/Q9XmUXz3vVSqA\n7f1WEKC5FhDWjzdGprTM3JyhvoR2PnPPW98aS+4UbfOX0AmK7+BZyEfgD5oz\nmkVR/43fCvJtp9hED8X9w20lBzEIsf6yiQWBak/4k3KCgohngxBmVmpr3ccO\n9mRSpfCJx9H5vIf3tq6PIWdO0Ay1rcqoKt0zCR6k4UGY6Kq8SwHWOse08GJQ\nrOZwKK9F/ZiMHlFjesB6m80wI5ScXA+lkdEGypoh96/3+PMxiNNIBlIYmCPm\nekTZPt9hiwTZTdEdVvDxP5XzUp0N1laVn/3i3ksPLBO74vtRwqNol6qla+Hr\nkaJ1A3SF2Ixvbk68uRffQF7u+1BDr4Srk1ahFBUUpqjDS3TGofFxc+CppegE\njHJezXW751/wL8240uVEkwApBrzjenmPYffXTEpFTAoQF34e7D/ZcJqJNq3n\nYhbf+SLQOE13VnIZsZyc/DzwavSrQbAUHN3cljtKEti9fKhAjGbOyPBPPAJU\n00vQEUE/Jl4JbieGCE7ND9sh0q2ZTpGNpFdPvU8noJ1cwMs9ZbC4bWbo88+R\nj8OHk68uGBqaoCX+DeP29wrTKmHoeCaSSzxkEcLc9mNgE8o32Uvro3nHL3mX\n7R68\r\n=zfk9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEwkHGET2iGDaMsSaax8VwpRqGdoMQLvexf6fSLvHUeMAiEAxS4VthlHrHVSikg7ief7zJZh6ttB4phq+2rx6jAXKx4="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.2_1643863835072_0.6217688967965436"},"_hasShrinkwrap":false},"1.0.164":{"name":"@leanup/cli","version":"1.0.164","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.2","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.2","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.164","@leanup/cli-core-format":"1.0.160","@leanup/cli-core-lint":"1.0.164","@leanup/cli-core-test":"1.0.164","autoprefixer":"10.4.2","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.6","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.49.7","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.164","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-fbzoM6E04uB7I76bNmSjE0AdNk7JxO6f+T/kLj+izPWAyIgStweQJ56AibNDfrphRZ3jXJaPufdai+mAl+bn8A==","shasum":"17c9107d6f8d783907d04198dbefdc31e1407a1b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.164.tgz","fileCount":64,"unpackedSize":152161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiB0uYCRA9TVsSAnZWagAAV98P/iw6i3Edk/qSJzk5pJFk\n81OVyCXSjgPsircjnR/ybt973VfWVmAGE1kSJ0C2zO2rkeHKU8i0jn+re0y8\nNZAziHwMQNxj2k0DDzAEyqCZXiTiQJL2CY5BHzv6gE/PoYa2SHwtgEKplly4\nGvwRqyWbmRczPxmHl5TAW5bS/k3YKsf13iGiL2gr/kOeC1PcwGWg8Yh02Ob5\npOl46W+dj9FGwpyEu1N7szJ72M8CpCcF5Y7lzNavBdQhhD7aMeKqObjRfToc\nqgLAqA2pIjBxZHXG+M4Ef8wgoHte3I+ubjYpuwaZawThnZ0/D1e08l8f3zzh\nfYc+D5UgcLL6wkYgNambZqBRgAKHwONXWi2Ldusw+OoC6zVPo5CshxyT5qba\n2WqZoutwddLqF14jed0TLJqdp3+IIpWMgv+CF6PsW/fsTaaVk8eowR8LrcBY\n+s+UjDj/gldtB4xCMIeqUe7EgBnSiVZAdeLXjgGDcgrfS1RQv5bL6Te0f4NL\ny0VT9XZP8aL5K2Owg9h3v1FyJbwAS2h3c3qfGvjxW6ZRdStj91nQAggr8Te9\nylQWkHyqeodLznwEIByGalKuxkQGdYbijJvlITm5wd34txPZYU3NaorFYa5h\nERhejf6AT+myTOjtBmq6xHVEMaSiq7LAgDot1oVOBVEYF8gH1L5r/sF/es7s\nYr/P\r\n=BdPN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqg5QEhEMjqhUWQ0aoYm8/61PAb5WMQ8uvolZXbnC0RAIgLVLO8/TqRkQzhOzu7r0dJWssD/dtUgJkloI7ICot8nk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.164_1644645271941_0.7367506037781018"},"_hasShrinkwrap":false},"1.1.57":{"name":"@leanup/cli","version":"1.1.57","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.22","@types/prettier":"2.4.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.57","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-n7efnFXI0D+eIQNg127nl0RmPLegEKCwr/J6inoAm4lcM4kyVWgGr7ZYQZimyhTxr3nFwjv5M0+Wu34m7xk0lw==","shasum":"f58e939b2d9f531688f5d1d2e7b4429c1f35800e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.57.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiB0uxCRA9TVsSAnZWagAApxAP/0GqCGMqClBHTjf0DBek\nsx4hFA44FXx7J09qdWNzysdFQMTaXjYqCzy5oAlgSwMGMaMk4jWttSR6zaPm\nudYZHmpMOyaCUnj1wB7flsKykbvpYhN4pGCoMIrHcWTlO9KvNMAXgAREs6m2\nPku9EG8A+5WfLHNQ5RefCRubsWsk986GSo719WmbkyjFFDh/IVVpqJ+KGE7d\nSO7NK8Ai/O7VYksU6EUWT1rAvg7HYjynRmdD0DjFRdSOW84fZXHmsySO16vc\n0ANHiHoh1YFi4jvglwnWQJx1vOX7yBdVRSskK79kivfe3Gx0u+NOjmwmIcjz\nc46l1wrgCFWM9mK/QTHKuplSeMvSUh94dLzdw9SrWPGF1iHGceDMaou/fCqP\niY+7HeRo/qB/V14QoxoTHSZ4r7ivXy5iW4c/Vue5jzAxnGER7710I7vVCKLZ\nDMbGk6vWHC5PnKYdmh1L+KFK/P+KWEuNkVDnJpxWj1Mr9g9XeqxmD9m8ZGJb\n8w7K6haEYYZCiwmSXGlYGlLpA4t2Qj5udqOi5WqAdXxGdR/c/+eyoc4z18iK\nHSrx0CSdcGVZ0IExslkETxLEWi9OmAEKrlX0ZWgPK/J1xe8PokhjjIlD9bS4\nxn4URO1s1qYN04kzrDmrP3kDYdiodpdSJgoCwJmo9D9hekKTKuo/UzQGnjtM\nd5Bn\r\n=j5ng\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCm8foQeyjvZnoFUNmvrzPq4c9Z+VtZNfTAmewyi5I1CAIhAPdY2Kw0DkLzeRgphQHmV3qHSNiH3psfwTAbJNwll+bk"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.57_1644645297760_0.6299424645315721"},"_hasShrinkwrap":false},"2.0.0-rc.38":{"name":"@leanup/cli","version":"2.0.0-rc.38","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.16","@types/prettier":"2.4.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.38","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-E0hbcQc7D4c91+Zut6tYKmKpiYJS7xtbHEQNuLDOC4ZxhpgUqAKdDwe4pXAkAe9p5wumni22KmmmUJQqW+sXyQ==","shasum":"9faee9ebe95a78320a1627f8f64b1ca7034d0307","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.38.tgz","fileCount":62,"unpackedSize":139794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiB0vxCRA9TVsSAnZWagAAn6EP/0vOhFeI/OShPPAtOj6F\n/4qsVM87cRgL41tT5tjyBQ8wg5FhUmsD4d3kOzBYZsAtNtXehH4SMu2whrK5\nrbmSWKdsQmbTcKkQttj62F1FxBrzSsxcmLwvmwoFnDoV26tKF/KenX5K8Lcm\ncBd4b86/L9iuvRMNW+ZIn5p3TYOB48wkQESlJwz/VuhPvDJxE+4Y0BjOKf9Y\nnfop0/VBqSdpg/abummfgOc7JpMPc+S8abAF9H9QNlnn5/hCV2KzvfoK17Xl\n0UwPxF7tHwWZdvXzXM9q2DKky6U15VE9a3pF4Ebx8odJ23RofmAEAFwMLiWb\nQh9tFg4SkNwIZugg9XnHonsFPwB8EGMhyQEREN41QwcCmX7BajCfZ0uEF0od\noePN+Akn4T01whkN1u+oKuR2IVBdiwbAlEsIBdQArop34v/igiacONM7VjKd\ncbCQ7xUpyWEOn/RpWqcpE6M899nNDiXTtaQHyTzOsy24ZFHPr84dzhzt2POq\nev5PqAEitRhQECZ7sCXSinb/0HB4b8Ke8sPrYmCZANT4nWlb1j+MhNSMvdQ4\ncHVrQTOmeo/wkt9ASEt3PFywEdOA+q360HlBgkGbO+qZhxwaHAIrCK8vmRc0\nzoD4LRvvSy/ExmwuiLpOghG56oBnPGmY2ngRYwZBuEfmVQyqXikUXsq4TwXJ\nJyur\r\n=+EdL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDo3pcP0418WXIHK+bnm76xYn71a7V6GKcNUG1pRhHdeAIhAMpTlCCPDq//mY+tBwugeS4T0/yR1YuxySYoSFG7XXXo"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.38_1644645360893_0.09797480998326935"},"_hasShrinkwrap":false},"1.2.27":{"name":"@leanup/cli","version":"1.2.27","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.22","@types/prettier":"2.4.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.27","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-/SEKEh6N/enkxZIQTPub/v7IQ+QnysJfzwCNM18GlEnWj6N3arq5yYy8PE69UL3o1cEMKU/vwxsMzUs9lIq7fQ==","shasum":"a1814142eeca36f9afc93c4204f13bcd12c22f2a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.27.tgz","fileCount":63,"unpackedSize":139811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiB0wPCRA9TVsSAnZWagAAHAoP/1llmQ5fPN3ncuQcYppe\nJBeX9zcwajOHxoN6KObkOlFXus0aZxlas52s+Tq5RX7Gpf/FjE92nHLhYZ5R\nA+sNnxMOgCfhPUmrSZwkcTdSBDUzFNnELKyR4pHXNdLaf1zoZkzhGH1RPSmb\nZBXi0WXCrGay/0EO9VkuXywA2EyeBwH+wTg5sbFbqrzJ898bFuCFCFHOeNvc\n+/MkO8QAtqg7BsJFAH9xKc/G0AhXbkihz/9O3LRzH9+CcAqwKUcdTY0puv1+\n8/yH605sD8wwLhi3bcjBf8OhwuUM8V7XYCLl2wbo0T1AWVWUzy70e8BQRVQV\n0Eb6M4qWHypCx/OXTcW1BORPk/1h7criiyM5LEC5FkEXSJIoMCbcLMezIS3W\nmKMnZA7shuLQUSGFSWJOCP7QaPuvAy1Xt8Yt4sqaCHEDR0EaxfSNPVVapdZd\nr0XxnQYbwoRIoaSLVV4uPgKP5/q1PGrhkpG3tF5NlDRF/PyMiK/jNCNapQj9\nFANtvzyjAGFkab6zW5cCdcIJg19CW6eF78g4W0V97dpMLmtzNo1M81NxQ1o4\nCBcDvUyZDxqWFPjwvCqHZz314PbllIx4BcaRCtXny8i/doMzUISNP+6yruYa\nJ0sqInyDXI8ptuBSbYTECIwoYucsqCikIh4yhV6E/kl2+Ud7BpY0Rk5+tGd9\neVcs\r\n=25/k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJl6itcyCYMnTNFm03nFcORO7OMQnIE5roEI6MCTxObAIgcbj7J/woOx1sTOsVwEp5QwVLb1EhG36rzvffmaAj20g="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.27_1644645391742_0.9976149736186279"},"_hasShrinkwrap":false},"1.3.3":{"name":"@leanup/cli","version":"1.3.3","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.16","@types/prettier":"2.4.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.3","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Vvpf6Jpfn/0sNfsoGDWkqP0lfp7voTIrOaa+1pRPHHLgefiY3KmoII8djAjr70CWeg5UTGJphSUM5aOOMAbPiA==","shasum":"f5cb5368dc0303da57bed3ae6d9b18dbc58fce72","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.3.tgz","fileCount":63,"unpackedSize":140035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiB1OhCRA9TVsSAnZWagAAUu0P+wU0iiGcIHy95xoYew+W\njkw+pjw+mMU5riXDBprFFnUKIh33lbmu4CpRvZ7RCJpdj0kywfwtu3zOqV+k\nuhBT03NjeH2mvcWRn1PoqWuqiVuYAjO65X4/qj+58A/+Omqrs4+oEYNTgeIU\njbwrofw0RXek9IZtlCrQIUd4smXsQ7wjalpbugR9XjcBmOFKt1gqiIHVr+Zy\n/WoEAYkiMoAfnijtmS4ZzuxHCT4VaE6rTGqyCabsxarBXNeSaH7gld6psBjZ\no7vTkAqY5XcRh8h8dg7Y9ZMow0uufdVUgUOOyFzoo68Ic5f7q4KtapvdxMdR\ndPuisAkpo/jenWvLxwFken1UIZGUbUsYMTwmsDKN2j3Ecp9vwT9I/MEpayu0\njr3UnB3Oh/zz6pLAQJTxduB3s9+sASFUZCi4juJE30RdsUmIgqzaBakHxOLH\n0+47z7/CYZCrqdLh8GqmQgJQbYxxGrQVmfeJcmEMi4vlNE1t/1pETB7LUGju\nHnVwiJ813racX62SUUqeD8xg0sdrkOb8mzQBsI601GmMbuRM28/dZhK5oxdj\ngV795Bh3MFe36QqbOjTqew2jdBZoXyH1dfLjCAkgtnK5C67fVPo5DDtVP1l4\nMENqwWpovn7czP8eCLwh0KCT8/+Nao16bixRsIjIVVJNy6UtpQ5TkX7XZK3t\nh/LM\r\n=2eTp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7G87LrzJtUKjYOExUYT0wEcxTPouKy8lLoMPeh0sFCgIgWMpvx7YiBwzusi9OOPLvYyt1vZPdhMv8Sg2xO7g6+Gc="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.3_1644647329372_0.543482842684498"},"_hasShrinkwrap":false},"1.0.165":{"name":"@leanup/cli","version":"1.0.165","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.4","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.2","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.165","@leanup/cli-core-format":"1.0.160","@leanup/cli-core-lint":"1.0.165","@leanup/cli-core-test":"1.0.165","autoprefixer":"10.4.2","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.6","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.49.7","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.165","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-zjTpH8VbqbCvCh0nIQ85SwF+rZSN5+FiGA+bPxii72CSKaoJLKA4YngvnL7gELWk45krW5V71XiH8zIaoA4g4Q==","shasum":"94cda1d7897fd2ed1efe2a63828279de4caac974","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.165.tgz","fileCount":64,"unpackedSize":152161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDIeYCRA9TVsSAnZWagAAIbMP/2+OzW6S+IOvMV1vbYTk\nxhr58zaI7uNpbGy/u3ooo/wgBtR+E1PyHM5hJqH9RxnBdojY5Hrq6/wt9bQD\n+1Brrvf89v1D4mLGf/rdD93Ldo+cxthLG/s9AIDaI15mkovuD0a1An34OrAP\nP4kUKWx3kfIEbtkShPHV3ZQA55Asl02JA7lfZ+WsUu4LksuXQW3aGq5qxKqg\nDX2sLXrjZ9FFp19mdgMKVjWKy6iG2t0M5kq7S6rmG2XkTazzgoSIHzAw2sjT\nhdLno/V4mrzuc7AnmVPEFk36S9AJlxM0T2vsoxTfum+ew6kzPDIrEtyVEVID\nq9i7But49D+0qryAMipRfzk5oOSkL932yhOf03TRvpRjloGGR0DMLYgQaFBl\nf6qlrohKvodFwpuZbx2fC6xKn9tpQeWn3FFZnoNYhtBE43aMYvYhUNDLoq1A\n9LJDUNZwc+H00TApEEKIbrBVrcmyvREWaz9g9H/VFCRa34Roi2eG+uLYczkV\nRwRq8eHW+isCcj4aoPChoAnnfxzOoefF6l8e9Ln5XEPMrtaDtStgMXiK2WkH\nZvszRAgZfYWgZb7nczBGHyepdoIjGDgxAb3pf2iQnVnta10jjPauTDm5whN7\nbdTKqHHohanb7Egmb+3VLYvCwRQ8gVuGSEEhzNyi0vlfkkOSwuSqxKJocxji\nSVm/\r\n=7rVR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFDOmVryCMWhEvRPpNbjNAtgSoPxrI/1V2r1fp/kgiXYAiBytjfOHqh+7g5sUpTceFUIrx6f5uoQR23TM/0PwEWt4A=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.165_1644988312061_0.5341839203778027"},"_hasShrinkwrap":false},"2.0.0-rc.39":{"name":"@leanup/cli","version":"2.0.0-rc.39","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.18","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.39","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-q4vGS2CPnsRrbFOyiyAEGdGNtw1UIixoGwyV/FsLsTFKw42tc6QVHkidYCJFKagjXRs9Cosk7seNrxzHqhgRpQ==","shasum":"a79d2f77b854a22558bbd2e4cb8b7b015a2c1cd0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.39.tgz","fileCount":62,"unpackedSize":139794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDIfUCRA9TVsSAnZWagAAuUwP/A1W5s/gLmIM0fx6K9GS\n5qGQ9mPcq1AVt1rZV3ZbC9rwIWkwQ6HZhIUzAv6kFBGBKiRQy/GN1NeDTbUe\n+/G9bLNaBbGh2wQqvfEfNGpNQXeg2aoLf4vGiL1rRqd2G51jnK+q2pSjn3ZI\nLnLtS10Okt3tUGtP+yzo+GcUgMGnrb13um6Q1//lCOEkmViC5JfnnVi5cpqb\n5O8RJn8MY28BGB1aoMAJuX0KnfKA/KM0Gyv89OFLDLNUU1WHh/oUcfkC4Z31\nLeWObKUVRf0Vc6KQH+4O94DNIxllQrIx+66DHW1BNjFP9zLhOqFgnpgcAuPQ\n7UijL9/9KKfZQTuoAiMPUToO34aN0eC89VB/9exuXDMYXfQp0fvcdwAye5H/\nGV+RXW/lxhjrMqPK5TX6j17E0meSKzh4Srkwn+A5QMMxqtXxASciH62z5Kqd\nOExv8Dvk2iCQOrmg88DOH16CZ6Eovi4nYFzYiGqgSpkR+BDVGafEQrkh7Ze1\ncXOkl+BJLCxDoYfmzn1qwOxc2RBebGZ/5ycvxqUf0eFsoVk1KtkUdAMVcMlr\nO6IrEbIQp+QQU6zqBKWOkC/wBwUl8ZR7JDZzxCNdfvpnr+3Pr32X6TBfsKLa\ngN8uBU2FsFBjn0saLcVMdIegAS2IITZUq0HI+UKAItjNJ1r6X3GZR45KGnLJ\ns2NL\r\n=Yekj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBheaCeCuVzElIcVNOaba8Ft+b3TKM9YTow0pK3qyvOUAiEAvVqDNyCzcoanO6+ClC3Y/uBDpTzPTlEQ70mDil7geFU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.39_1644988372454_0.7439293986873841"},"_hasShrinkwrap":false},"1.2.28":{"name":"@leanup/cli","version":"1.2.28","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.25","@types/prettier":"2.4.4","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.28","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-2lbO8xy1hB4GVybAzcnLc+fgApnFROQJSuaQKhaLdYPlpIZK1bjYHeCIkkKQfQf90dN1ft87WcPRPanQ+aOKnQ==","shasum":"a46369ee270d8d4e67c058ed0f68f90ddd1d60ad","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.28.tgz","fileCount":63,"unpackedSize":139811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDIfkCRA9TVsSAnZWagAAUrYP/2cCBA7fR8+otIkhf+z5\nn4BMGrqZ26NK8gwfrNopLg1SjO2JACxQU88o6Fb0/yz20ikauRs+rdYxIKEO\nzfE11c8LvfRj2jICXDGw5V5l/FjRgcwFy5SULxfsvjxoegzArf2pvy0MDzWG\netaJ5dm9VRP6Hen3ShI5Lo7WGCQjW5+nOuGnxx9Dxe333v3bk2u+sVTvJ2sG\nTLYBMPkm/OvBlRmvzf9B8DnxMoBvUGZL8qheKeK304PQOonpqJbFyrbLK1Ck\nFgfXvO7bF0NPDjyPXA+Dz2dh4NisobvZ+X3ZAg7d6WTM3tExwmGSzpe0kmAC\n6MqLX6l+1OG0/GPGC0jf4qKmVlRAKXL3jOq8U1FweipVt+qA6YqWuXwS2S3H\nUuRSZBmOGY2MHm+ZeLXxM/prGhokeaZ1xTr79lQe/AWQ+dJPLmpmoy4H9Ea5\n+RvLcGEs4ypJcc0fzcaJoXP26K9Z4NrEl08T6uLOoU2nJ8n7ZHChTNu/mEmr\nWAkEel9SAXFyn5hsOMgknSOE1arOSlgZw3xLn1z9FDlCs9yzLzc9irozlTd0\nogqZJ6yrgMWG5EiO17EktLSL9oeU0FGIMO0fGl1ORNvWKTzzFWfkg7Ia0B6N\n+PmCi2+9VcMlDbcwdYYOPulje6t0Fi5kxq1JcelR33J+41mx13EsuqjBFOPI\n56TW\r\n=gUbR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEEuseTxEhOxEkzpFWpc+FQc0ECpkUtQGPZcGyztjymOAiEA/33XyS3CgCWXW9cG9lLLBDjoQQ+skeQEu5I/+ZP/oQs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.28_1644988388006_0.5647644483889751"},"_hasShrinkwrap":false},"1.1.58":{"name":"@leanup/cli","version":"1.1.58","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.25","@types/prettier":"2.4.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.58","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-1TLFE0neOKlPk1A13DT+jJz9hwsLYX6Jku6VVoh4wEu13In7YYwrvYtG5Nw+wOFldDDFIWODEIk6lgitAHe1gQ==","shasum":"9f1e38359e9bed540af94e4d3ee854cc93511e2b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.58.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDIjuCRA9TVsSAnZWagAAMmEP/iAHV7IXPslRsOrTvSMg\nq/niXQxQ1Ny+b1g6tje2eXfJHojyXCInS9dssFk4QXti+RViTTJNuS8ebnmG\nT+4mFGdczgr0ES426joCa1Xni7FuAYkm51f9MnJtkdwvOlUwPXcKtgV7bLqL\n4wxONJjI3f61UN5YsJxFbudTcelUft83AFQulc6PNTU5J/fmSPaT/SeAHJdv\npkgL0UUTznTBmysSyR5N5iW9tzsinhuG9PYTb6hbE/P82awLCrTwQ460N3N/\nPibSkv6ns2287tYM40i+HyHlDmm0m4sH4QwVrjtkou8VlPrP6Yj31hAddnnB\nfa+hdynrtyD2C0tC0cdr1SZ/cikwR76BI2h4V2t6u2Kb69ox4LY1XdHApCXH\nIZw5Sgw35vb9ioDpBCitnYODnDUgLpOQMBQz8iVT6cyOVr0QWHbKNzlLHhSq\nR1bN+cMn9cDwqHh80uI3axlERiU8QI17HlJUswEvUNlIkRiDGMA5veFM+LGZ\n7JwNnf1Bg2C160foKFaZyhnQ5YVg9/MaW9/jSJwvFNSh49NFDrCHQ4+K9QxT\nWqYxf04f/t4sR20oebhQxHX7lbraLQyKSVH7Rn+XQbyuLGacnIJtN03JwAsB\ntRzON46f1sO++rQCpnTaHtT7YE0Iu20irOqfZNuFyLMqDLIUNBmaqS2+Gn2S\nETla\r\n=nc/D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLoOnEfrvxQd0cdXD8FPtjrg6ESuRadIkU8Dcs9Z+5zwIgAOSQBnqGnuJFxSwrkZhRM/ra2uQkaiwFys0XGKvFtbE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.58_1644988654005_0.6250049628810899"},"_hasShrinkwrap":false},"1.3.4":{"name":"@leanup/cli","version":"1.3.4","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.18","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.4","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-h1l4r3niPsW4Z0KiF9Gs7v+mZdPLm7xKf1X05sP4lCiXP6pcoISp9j4CgaXHE9U20BOVTv9BCEmaNiAgrNua1A==","shasum":"de0f9e541811a68ab896fad0a61f5b978d0f92a1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.4.tgz","fileCount":63,"unpackedSize":140035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDImtCRA9TVsSAnZWagAA0uAQAJ0C3vxIMhIOj/hbLqY9\n/Ihj457j39/jvgPL/qqZijJ1aemg1xtKt1XmK1idb9yTLUTGRved8/8HqyjD\nuD2908DwFhMyIsHWEm2PEQbEVlxlWG+fzO5RifH2tRy14V+m4BpdGlbsDg+n\nkPs3MW3isXbhrB+WuHSTs7FZ52M2euroiI6b+qJjCE8z3seSQImAuih0qQmw\np4P2I6gf9i0rmjHlBseq/FmHyjVlww2USjRr7DWFmUjSXBz2HGmQC6N99/gF\nzzthGgiySxQIu7a2i/S2jPzEkRARZvUO7ZTsy6BrqV15654IXFrzUPnBlLR8\n6my60fmKF7jCstonxHr983VgKGGcR7B10F6QBrTUPwSH4Rexzpu/E0Ov4hxC\nAtJMxw4KEDRsDL9H+uI4TsZxaf3lwJ0x8AWS2zZGQzlOzWv5CdAFXCDvPV8K\nnr2LND53+PBDUlw6uxcI+YDjcmkwd6vKoVR8e3JTNfNYTBrhr0rhaeiQRuWP\nJ7APF4IMwfgiI8EB0E96fsh4f8kgASw/8tB2FZCC/rAcqKrnQvIljYywYMMZ\nEgKFtQu23gqNqhkrUQjfMkv5n2W8Yd1iXl5pwc+V156BYryAvBwOn5OUOdJ4\n3Gbov22fbplrVo++++gH/F9px/8I0glxG3EJ0FaAU3gKnOHe4UO8g5Xal3RI\nVWW6\r\n=NR4i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJKPP8WsKYZee7CECCJnmj3NWjovkP3cSdy4+EonX1qAiACxhZXDurzKXI37NcRM/Cu8GzqEcR+g9ohwl35Shc1hg=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.4_1644988845068_0.18970021158542405"},"_hasShrinkwrap":false},"1.0.166":{"name":"@leanup/cli","version":"1.0.166","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.5","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.2","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.166","@leanup/cli-core-format":"1.0.160","@leanup/cli-core-lint":"1.0.165","@leanup/cli-core-test":"1.0.166","autoprefixer":"10.4.2","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.6","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.49.8","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.166","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-q3Ndt61Hwbn880/893jojb6Agjlb9/HRivr7AQj6sspw+SZtGZDnjQ2FTIbF9v91Dd94wpwXaq+k6cUdtlvS9g==","shasum":"f58b97afa07d1c1c213291f28e56556a1124aa06","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.166.tgz","fileCount":64,"unpackedSize":152161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFsxxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo3QxAAi9SjhrxZCbR501XpolCNT2XsaugjtPAdlo+nCvj6ZuEAHkyJ\r\n5IpyGvpRD4v7W26C0rBvsLh48E4mKYir6Lw3sY2M2eKlla6KfLOhGdM+pytz\r\niikpzpIRpIUgYXKgRKwRTpFPZiVWkCaj7JFKmS33dzYQ6YgDKzRvHdBjvChJ\r\nyiawsCCl09S3n+/TJAWEoNxMe33kbS9D8iB4W+TWZmUErU8EIWtJayUb5CYt\r\nAHQSqoM7qMcJ+RIgNshCV8S/iJVOOwtQbh8oXYR8NkvVbfaLSy3o+9OUZ928\r\nKptCb2tpwUg9sqEuBTpHebQ8Nx4YOsKT8dX5fQHj58EkrNchusk8JmKVObIX\r\nJ06Jjv//LdxJcotRBOvD4sEN6HKpmtkUomQXxkPZD6h+OFMuY8bwu4hUMBmE\r\n2IgJBLfHmP+MctzMe7FwhMPQdDS3Ed4VD6YDB8FI+4D1wLetFFctQPFwvUtN\r\n9T6dFRwi/i32yA7P4ODjZLpPdh2qd9jdnEwH+jTNZP32e4NGrGb+PyS0INUH\r\nUjv4yRL01NblnLeg2VcDlAgrFLokePg3q1vPwr00nj9NbaMWcuzoT/q7DA0T\r\nn1E92vrQVwCCcsQXryKIM7rUGIW8IpyD/KP21sMO2tw7bJTPybgFXNSbNa2M\r\n4JeKHWpgvjDuLaMa3CwFWGBhPD2eE3nPWxQ=\r\n=5qaD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+H7BKOhUcAyp933KgT/wF9icbjttKytqMDS9vF5yvlgIgcKQd6K21QbuYCOKsaRs64QZaRtm/8ix5Cig4H/ZhWEs="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.166_1645661296849_0.7017370597357726"},"_hasShrinkwrap":false},"1.1.59":{"name":"@leanup/cli","version":"1.1.59","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.25","@types/prettier":"2.4.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.59","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-LWLeBSNtFt3mHNLtZCmIdG7bH/nM9DKdJnWN54Jx5chJ9IUl5coc6U0EhwPBHnhb9DrcTLwOoUulvY57s7ixsA==","shasum":"4a02fc5bd034903628173eb85a1e95f4343e201f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.59.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFszZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpimxAAnPWwUDLz9jz9oKHH87KUMcplvUcBdPcSN65dLE+tVNk5cbIW\r\nqTHH6q4poJw2qzzcD70LLtPP3xSMBaNexPi4UDSGh9XPlxl13wC57cyiTWAY\r\nf/GRMfTWb8rN+yswDJYwRDhdvdcXGDyc/DUQ9HnV9T6se3OLuyKsKAlXI2KX\r\n0bcA94XM07EbWAuQ3tER1XvYMF6ozd6sduxwuJtcAYTI8AFWKIg9gR2g8H2f\r\ny5VRJUTMD44ZGZ6d7UXh6RPOU50SuLyO9WV1B873LuQ20wRp93ymL8m6xqQ/\r\ndP8NslTAX5n4llTiTq3170gCHJhdaAEty9DXssIQfTF5hy1q90PEAiFHSSCv\r\nJNWnH1z8FnPCmsgWDMwFKv9Q7FgzlTebH6CReNdXSXwraGkYyr+IOTgiKzhw\r\nwz8zheW2cF0GmGqpGB0UphaKVRdrgVPr6WRJ0c7LyqIIirjxZIlg1IWtUt67\r\neytXt5NGp1HvM14XcqbfEvbyPEg95nDJVfRh62fTeCXxbiaYioJGvQqKDHci\r\nh+Q2+Fr/CDtjY/Z1ZH5HpmSpmd/gkd3DhB7UJJrGxIhvZdwRiZQfdW+uUYpe\r\nTj/TwXa29kv/zeMyO6ZM1XnjR7tuXnmpYo4pwea7/pQsjJBDeggnqquyBdlI\r\niSPQYJ1pprCu70LgZBPGdbEKLpe+u6pAats=\r\n=OZth\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0OF9VnLRRn4j/+BYUpJFIAso2A+dktF23qco3LHG1xwIhALhmU4CwAOJoKtPpz/EoXWek4G/4davPf1jgiKiApO9V"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.59_1645661401606_0.14198653550556006"},"_hasShrinkwrap":false},"1.3.5":{"name":"@leanup/cli","version":"1.3.5","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.19","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.5","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-97G9o91TgxkDCvfn1AhzgZhIjI8zHzzIxZOpV6VURKAAABB/k1jWLp/Bgd25i05AX6k1TymNKUDVQ1swNIuvXA==","shasum":"bed818f407f79b71c16977e844ad8754d81dcf49","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.5.tgz","fileCount":63,"unpackedSize":140035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFsz+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqxoQ//bUjCf1JaZpvGDefYVHMDJe18gpcIQg5ylAihrVHHH5PE/0AQ\r\nnT7bDOMh8mtpTPQsv8Ln9L/GwMlr3OagEuB7lSA9XGESq+zHZHlNpoaTmOw5\r\nxzihvl4ZKY2hRIYKrbvStvd9sr/7SBPnGpIWf4xxmxPJlY3cEQrlfg/JveQn\r\nhXZ6a4tWaMHIuE+I5iXFisCknQxzjggCeXUt0PKY9QBNkRm2S8SgQ3yhNRCZ\r\nO3xr7TNFuiaNHZ2NfUlpelJRqRknlMLTudV0diou7wmyLHwWp/9KF4oqnCBM\r\n8sgrUX9TvAC+Za/NwhZTwHSSD5EgIIRHpWrmqbo8+db/en6ns90p99eeXkOB\r\n7NYm4SV8z3Oi4W84J2+AlLwLQLZ88Rq4OPKIpy6pUQWjhZyJB+XOEbwFAxhD\r\nljnXy0L72rQQ25IGBVLCmOCGD7FCYKHIf7u3kSuOfcq79CWcM5gM/M+hH/Q/\r\nuaM5VKZIZZqAUJyuRmqp3qa7aHlB6W0GzjadW+K27veOYW2QYx/fAAyk+jD6\r\n3lcprRNzmaC4LbCArd3wBZPBNEXK8vlfPyEoBMu7nzlkM+LUtsDfcT9qqTVu\r\nWs/OE+VnlKHbk3mccE2QX3D3YvcSUReCd1X6+ESddql+yHELHOnQ2fwoKXdL\r\nHVw/pPgxJu+A5vro+Qa84XD0BaR7Qm+l0z0=\r\n=f9IQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF+lDz10Kc9GQTGCZzAqg2dwoPvqjmhOQYTwn09LmYH5AiEAzyc0Lpp5uSkhrDia9rGn5DbxxRUeH5vUotoATSWX6AU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.5_1645661438304_0.5355209598524013"},"_hasShrinkwrap":false},"1.2.29":{"name":"@leanup/cli","version":"1.2.29","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.25","@types/prettier":"2.4.4","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.29","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-TRE4tsIBqFaCmpfX2duh6LqwMa5LBT48/JaWcEtXs0FA8lRbpUFRowhenm9eASKxRP9UXDLuFsf3sZpyhlKWQg==","shasum":"fa66a78ddf67cc860ef2bab604e14f883d49f325","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.29.tgz","fileCount":63,"unpackedSize":139811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFs0XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrd0A//YAjOY1R4jwJVMmmEdWZ8avRAVEq40GMg0oFhd3YJ8ed8nwJx\r\nF2XOSxdhEo3atCtpfpAHhCMvnaL7+DQuDvT/qCjchky/m+d7QW5sfihPDbCS\r\n8EAIbT/8gsqZ4RHnOkIkZv+cpYYIVuKOEfEaYA2Ceh5HeNaoinIyj9TI0234\r\nFdilSovP5B4ECgyvpq/DFh9YcmW2r/c7pXFS9w4B5NeuZp2Z/QlVpvuCriJM\r\nQXs7qoglhSuqr+cIxNMVVtcTq7wIfCAje2QIbB3eJ/5fZQWd9ScQScamIgqq\r\nxAv0ujouHblFV9lAoRk2+wnnBg7a4ZIBU9t+r3Q9z0qOqcEN8VedxvAR/pKp\r\nTXZ6L8QSR3/pgIDXraPkzHNE1oZZ6e5ScAYjGLMY3XpPI7dJdzRq/5aCWyNt\r\nQwHRIwwI2nWGnwowZQub2L/TmuGaL7HhPtvUEd07TF+oyAK8CXeJGQq7tTg/\r\nAAIsUaakWhqK7jaEzJxJz0ESlxPI+OoPrkIIzPJOVexaFHPRuzL1SCVgyJyV\r\nuWTMbK/rjgve/cJkDmuPsjPb/+WjjmPIY3BZ9Cr0gEznyfXsPMMALtkCDN4T\r\nfLSL7Z9hSdDNAbAT3jj0IwbEkOX5GXm/zrr72SCGU4uZaxy4/0xCvrNDgYe2\r\nnb1/SVilDafpV6kCkojMpVEGc6mrLetj8I0=\r\n=w2+0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEhHaR2KwRq7xjhSgDQGu8AOOmTEclREulDnv6X1ZwRQIhALIZEDd9RT81jX9YCoIUD04yYRXj1Ab0yzX6rGIN3ni3"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.29_1645661463712_0.03253986230936401"},"_hasShrinkwrap":false},"2.0.0-rc.40":{"name":"@leanup/cli","version":"2.0.0-rc.40","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.19","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.40","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-cp6sEFRoo3HzZnpdnFhpN0MRhnIWtBl+cTPbi513kf9ll4dDyvuI+AbxsUAAPDkSV0Evtm9R5vZxvgMdtBD5CQ==","shasum":"3cc215cc3366b4391163d7f2645572ec19d12906","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.40.tgz","fileCount":62,"unpackedSize":139794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFs13ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq1qQ//SD0DihLA6DCVEj7pZjnZLr8G2rE9BiXhJOgpnQfWOZWKYmUP\r\nvvFFvwVCSYgiTEJxlTdQc16fIjKBQW4YX4LMaL4A8NBB0TwBsWneguv/l6Rf\r\nYS+CSF3SEtvXcuCAw7+k6eHZikpc+dWtzKGXBN8yNIMFJzeVM6QIN4oc1d1z\r\nyeKIOcDDyeshxqyiGJ3yORSWBxYzoP/AHSMDT5esJxF/wPwHWMLZimEmW8k6\r\nq2sNmP1wCsdSPHAGB5NOOB6d24CrRYSGXOWd97YNVG/MWCxF5NSnUBwsxE5y\r\nSzOgq3/3ZUYn/Tr6Yc/XGgmU7e9BycM2JLxhr5NGz+2Ypte+wCKBzlmHmPqC\r\nPpKpNKM9ObyFOGbfSw4UIOgy6K3npHes9KaRHDdLnz8E705/NwCqkJniMM8S\r\nFyipaoi9BMYjUoPoo83SHUxQvnZYxYFVfgZApTspEYg9FXhfKEAzySJJpK9k\r\njwkwrwzBtIVXmaIJc+zXrGtD5tZgALaAp5IoMhOKLyGwB2vkJzmh7qmMd6ho\r\nCFMrkYkadXrne5Dyc6xzHDs6uWQUj5gok0E8j6SPeThitMbjLMio/+rpHdx1\r\nkz1x1JDDGAS/8vVOBNkvZruWhqhCOm1doIMOXTEzUgVgdio5WL0JecziwhxN\r\nc4l569IQ01aFIpyeVdoxo2YiE6AAY8XRCck=\r\n=3Sn1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXJ0BRR/ptDHGPKFxBvHPD3x1rDQ7GpKVwZq2QqQRa5QIhAMgLxKLn9ZRjUGY/grQdEFeWI1Bcd4r/5EAf824KEiBS"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.40_1645661559612_0.9519869829531833"},"_hasShrinkwrap":false},"1.3.6":{"name":"@leanup/cli","version":"1.3.6","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.21","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.6","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-SnkT9Duc66gHzx3uyey+hCjJougGPsSlOR/FrtA0SOiivLCu0Qlhm1L4eUmW0DamGTVvYmi/QzMpdw6ED2jnqg==","shasum":"a17e911e12a87e59241309704bef37c8ab29fe4f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.6.tgz","fileCount":63,"unpackedSize":140035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHxUsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrhlg//fzCu5TwpYGBx6MWXrt9SF5Wmk0D6/U3L2ctTekjDiOT9C+d9\r\n3vN2XyowFrCrIj4AFCYf7kox4EcoIts4TwJeJmJkvb+vwLxYUCiob4JodX+g\r\n3lXPy+KC/E4S9o/TUbwaaDyvhNNetJSh8lTheVy55JmGOHz9MTDdI/HZnFrl\r\nb1LGrlRIhvzTGs3F56/v+jl2P5c2SqlB03Y0wOmf+oelxm1FWFLxkpsVRVoR\r\niGkMEPz6K5roZZF2Qp+gLajjy3cAX9op1MDIf51/N4k5Jk+zTQS96s2NxsGw\r\n8aqtjLf0QifIgHMz28NRphUIXtrlP/IP9UMs8CL+w4NPhxQWujDawPi0BeG5\r\nSmRzO1G5vggvjxMofle0ZOiXP6gj7amxcijTvSgdv5PSys4geI4oNiXfHRb9\r\nGms86NBD5VB0a2WV6QhUdgi6KQ2uhkMuL1PabMjmVVxjv7yg+uXMSdJXxkSY\r\nZBcy3qPRgMUZTCylkPrgJojKGRv8O1zdFVNE1BUnwxaem66Wl1c7GAvpdld5\r\nR3TmIA1whpT5kNLNG8u3nHwP0LeiKFcBTjxEQNyyB8binGPzCe98n9aAsvLW\r\n6L0Cd6fLZPBEg9WVad+VPcr6uohTbTQuRUG0U3JEUjzkGGRz5m2MoCMOZ+Dl\r\nJGG2Fj0nSb2U+IXFr7e7mQ5jF8gmOTAsBqE=\r\n=0fhD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYRTMuZxRHXfeRnF3a8efx/6chKrEdOvUkjpuFnjSB2gIhAMYzaUpIs1zZDeGj5SGGAhEOaa66io4nH6jiByHz10JG"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.6_1646204204749_0.9755313098751464"},"_hasShrinkwrap":false},"1.1.60":{"name":"@leanup/cli","version":"1.1.60","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.4.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.60","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Fy1O5nDzuRix1BpWFDV05Fm8T+I2T7YXPxWviBWKJh1Dxy36vQ2y9com2C654Cu0HiErZmg9aGvAfFw5loh8gA==","shasum":"5468e825d6cf0847ca78646f6598dda3f1e11dc5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.60.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHxg5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpPKQ//S/H0x+fYOLgn2s2ZPa0hEqpjmwXnT357/blHU/QegRoatYty\r\nOLh/z25OqDA3yKPM22XaMVI1Nqfbh4NQYAxMYnzDV7qV16HvsnRZp0+8BN5K\r\nwuSqFrEpklyK7w/UJXQ7E4y6oc7NvEVN1vNG498kWAy3GeQZiVrNmT3Qti4t\r\nyZZfk0J3vNqM94w2rkFb0PMPRRFJ5z1b/nAuaGLN3kRGnWZZpXggl5UFFt3A\r\nBP3Y87VFh2aGKONNjQcPrIaCd/spK2sqYUqyuNRLdFG+OvkwGCsi0wNR1/Mc\r\nolyoDACgXsabvfiZPcheb0SkRlmjradc8nqu4CXGTiswfN89kdv66JH5+D3b\r\n2h+0TZqRqvMDpd+Shbb2LbjA/3R5iI3eId+YBgAOxuYO4qylzaH8z0q8kd61\r\nzoVmUcLOYJuwn/iTYSCvUWoU+uLofelvVJc5iQ+ytzhLWSvTPRWnVIaKTU8n\r\npvhsw2e7rifnGsPmtnouXGNe1zOfWo8bwgKQltkkjTvzJW87hffbnIICYlN0\r\nn/F11ecT9FkZjYWGCkSxmbu4g5iDTLalhv52zlZWj7eggfrnKdDOTMTLXgPj\r\nqAPvr4mvD5XlmzuDg4EP3uCQf746Fp0g6guyh0wF7+uBKQIG9Z+/tTo67NGy\r\nJzkd9dlVBbu9SlWvhKVOTTmBPyCRn1Z0jFU=\r\n=la54\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDinH4k5F+PBjtykpFfr6si366hikX2UXl/MLWUk0CoCQIgTXpINhNXnXWNJPsg0FLWkT0jPf8xSycR0S6Fsl8brB8="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.60_1646204985661_0.5809410927355425"},"_hasShrinkwrap":false},"2.0.0-rc.41":{"name":"@leanup/cli","version":"2.0.0-rc.41","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.21","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.41","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-PsVQCxXA0KB1zqadu1n6frwNjGZpwN97IM6mQlCCutsRIPE6KORWc1S6d5PfMqdZKgqnZ6qMtSPZ3kd9EByhBg==","shasum":"acb60a4ba80e998e234db265461ff7059d243066","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.41.tgz","fileCount":62,"unpackedSize":139794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHxinACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpS8A//dfXriKwmKfoDj0ybFo8Oe+/WDtb+Z3y5nF4YWKJKdfEUFJcV\r\ne1OnI7+2QKteKNe46DJ+0dJl8bmHVQPtvBwN985Br1h5+KbE/knCNFV0RBaU\r\n+e0riDts4jTpuuzo/PozjZWsG5DmpCZN0LoBNFqiQepCY5I6v3HVtfYkEMcp\r\nJmdIHZ0rnPu2Wy+DzxaCPvjnEC7Pg/9uNteCSp14s7VYY7nnK4dLiqtU5xjo\r\neXx/L6hYwhm9wsRy0oM1i3c3HPIh2EN/ZPc1Ud9aUupBuXJSXB9uBXOSdlZE\r\nPLoPk1Q172Syu8VEsdMiD5EttIuA5HYhx8eN6Vw4ZefKqdiWYa/FlRgpGxxG\r\ny+04UBkWswd+bwjgEOTk2sN/uK4aTKgY0OsYbROj7i5VmE+xmShbvQRM0Q+0\r\n7+8kzUiVCksEmP+cUE9AfjPhX6NL1Ur6PSJsmxRZBu1qQCifZ7cRpT31noZl\r\nMKfc2XQA1R46iBlwf0NaVkGTfMwADThclchPpY+2FOMlwcbDnrHP02aWuzdg\r\noGpNtmJKzG0gfT9PXEMph35SCYKrIlge+7xJlfoVYGckn1/DpQfGROrfarYq\r\nS3411gt4gZ/hO4Bg8b6aUMXKhc2EHJi40W/k15czdf5MOf5VFPPhDls7t4Sj\r\ndbmuhx8ifd7gA3tIv0bvcaTB9YWxAt8vr7U=\r\n=op/2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC3eYmjvGyirCAOpYrp09lydOpl5Nt1I9+niiQrOCFpGAiEA+ovLHlx9ohXTrm18zJZ+M7gc928NtvactEC/NWfU804="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.41_1646205095707_0.1820921992710982"},"_hasShrinkwrap":false},"1.1.61":{"name":"@leanup/cli","version":"1.1.61","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.4.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.61","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-FbivY0gzZyz3n7qfWAbleXXveV1g/EsXymhuu94CghpT01MJB1D/z9gtHNpMet7vUE2R9Xx89K4EEQQk2R9nHA==","shasum":"85615981cfdb87c13638bcd0fddc865e0b0bb9bb","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.61.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKq3CACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJPQ//UGnK5fIG8uZKzso4ouLB81AcTW7lQgMb0v372oN/jZhWI1Zc\r\nlYxaAWfNWwk1Doj1dylH5xadBjtlbYUzcZGa0aPer3KjUuueecu/YFUn85A2\r\ndcEoD+3JEtXY43vEpiSSpHeo7UNO3GQ8dgor9HwKFd3+jvyfdLsOPgrtIcSU\r\ndnjDR5ETDZzZIbzT/nhvfppUAUawk/SNKB/or8xAUVwaBJKV31iZSTKKv4E4\r\nb7sMiSx9MiqjDq0A8RbwVHYp13SyJBgvOI6TVhRX0TneKKAm3T+TcjRoJx9y\r\n5PDHxhxr1mIax2YYuIg+O4JVVJolDQpdmLmwoarX5GqkOo7DrQivSFzXTLpB\r\nHb3F9Fp7HTfyIfrQoov1/zpCTZ5cKuiAEQP90UYKlyvOwyP5FUDuIsgRFJXn\r\n3oOBxYmmg35gBgxSjvk0ULmJBg3BvrQVfOx2m93VZnLUVT5vvDx4vXubcak6\r\nC/Nw6iCqzEEsmjgREe591lReIRu89OMvQWEpFDji/C2FG2WTFncPvf8O1yra\r\nb3mNn32kFU8umjLbW/N8pvXKPOphEDAL5cK/FyCu0M2l3FKzAx5mtr68fT1G\r\nLPBvFW7ZzHdLBaB4LrWA1M0YS8eXbVwSXgTiGP/ZHgKCB2mX7a8S0rR+gwAC\r\nYXULlZDiWXjX1ZCBW9f7pFuF7+n1xAmF1f4=\r\n=aHf3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIArnzYA/+oS6+jcO0yy/w5Y4gJoK7neXMi5Q3vttpuNuAiEAl0pYTnbk21mYdt4GfR12LI4HrGrcfYpWxIFp4qMHLlE="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.61_1646964162359_0.8950275733429813"},"_hasShrinkwrap":false},"1.3.7":{"name":"@leanup/cli","version":"1.3.7","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.21","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.7","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-vmjlys5N87TUDPYeCIQrmbFuDGb3aePgBpCnQ2WVP7xff9/PjE6V3vaiHRlV1CxZIkfc+Bmc6h4I1c7nAyYebQ==","shasum":"f4a43d7e6b3b24afbcef0a579c4a1a2bc0132231","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.7.tgz","fileCount":63,"unpackedSize":140035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKrBLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmozYg//X85h+yF+QPNcpI9KpkqCfwxNv4jEIT98yH9uWLjJKoORPvC3\r\nVLgful7EIRaH2wxtT1v/nXRwM1UgRYEDLATD/BSazMvPXhkpQQVQRrVPh1/O\r\nsHn39ZPH//Tb0i8jfFainu9ozzp+P8EieFhvghu0FxI3Dbm9KmUOCb2/4DCo\r\n9GB53n/Y84GwQDqgE2Qna2Js6iZdjDwqg67eWxHzZbAHSIs7j/ZPmxlamZda\r\n2V62Piiwn8Dx9hLRJ9jHpSLGLfyWCpW++Fq8llWFDB2C8QyESLgiOAptB6Kj\r\nAaG8VRrewwe08qRfQGvUmqa0cT6JRPiue2hBR+Bw72KbRFdaZriZYRGg7AMJ\r\n2fktYlcK6HO9M+Ws0OJFcumoj+RYn3xmqN7kM6c7H+iDtg4pKSylIniTe/2H\r\nPLezqeJAXNi6jgFwseBgGzMynyxdfUxPhxvU1r1qdJbHwGkJnfcL9C5thfY2\r\n//xMpihi0nU0J2/k9aASHywErYyUhu/oIyPhmdauz8aszGOrPd7kRuQ2TMPj\r\ncaZnryzDqNtsPKYZS1FTxkzC3HQzT0erfxTmwNOPbxlqTzX+dA2mJgLPpk+W\r\ntXUnWft5zI5OttOMhmUcnz0U9V0jkxkI4GcPUs3q3m9cysXG+vrUWdzvmTkf\r\n7hGd2LBziJYhHUwp291iGp44JJVW+dM9gu0=\r\n=1KJT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID85mxoKYV/QS86uEcyFTh7OyR4HQe/i48/nvjzGw/YpAiBvS8esklvNm/1xzXPqd2cr10PZVJTibkxwATqQIxPxIw=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.7_1646964811035_0.9373380075844011"},"_hasShrinkwrap":false},"2.0.0-rc.42":{"name":"@leanup/cli","version":"2.0.0-rc.42","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.0.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"17.0.21","@types/prettier":"2.4.4","typescript":"4.6.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.42","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-7Uk2MeUGf0Lk4phfzzK7EFwn8MLezuw1DoaWlFdRiYAHENQ9+ZLK+AUMf8LJxhEwufMIjYOd0UCKcmu4DO/E9g==","shasum":"0d04ebbbc5786597305658f4ea722832ec1a4a1f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.42.tgz","fileCount":62,"unpackedSize":139794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKruEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpePg//QVd/wYY87AJ1hRgyodrxl0taSqwqrIRDt64UWg03P9zYsK05\r\nFgKX6rbzV9ysqcwo2ykY3qFjO2s9Qrhnf62v04OQwemR9bAQrPCrPsJ9D5H8\r\n1uD2Eass4Xm5AjYtxDhYu4GUPF1WXPBzqK70H6LGa2gDSpHHy0exgI0eh9+g\r\nN0Doo84czdT2+daJgdGr8UKOvl9l9Lgxm3NcnpOQQCGr0PtASXJK4RXMD+Id\r\nmF4XSFKPFhVRGYqSg5uAkvruuMldvCjYzW5yCTxx3DA+CBP0LFkxeGMs7BvR\r\nMr6u9VHGSVwxS0WaqALyige0Gjl773IsRFtxu1W+a+ev32qB3v/H+miRaiwM\r\n+NKlHuxlK5yhCAxau1rWXwAobL9arKqrfv4K4wyS+vBRhMBdcn0oDzj2p6gZ\r\nDwr1xdVxaN8ytiTyrLy7o/EX6UAGW60vVhYxVoFHVkbPn2nQV/OJdCnJeSVd\r\nBcF0dAeF/MOyFNOhcC9yX0pd8Vm8Du5ti4CMQIhaT2TrWqf2AwvxwkUatRIh\r\nO55RxCUn6aWv5fU7LbmtF0EPhtm/jVB1P4M86sVNXL1WsbTP9rZagjoO75OI\r\ntipNdsWgXehuJSwMpCivlYnesehCcLrW+bmraxu8z5/pgcj+1p+xW0dhD9My\r\naDDNTzaAnZZxJYbR5VEorzrnHZxYTbvXswc=\r\n=fn9n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDl7nUyy0RyA/IN4eAEfGXVzgu+oTYO5ieVHXhWpR34eQIhAOaLJMJWjgKRXa3WtwrhE5yGZexnP1z837Eot9Pz/Hdr"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.42_1646967684392_0.7503274449081989"},"_hasShrinkwrap":false},"1.0.167":{"name":"@leanup/cli","version":"1.0.167","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.5","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.2","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.167","@leanup/cli-core-format":"1.0.160","@leanup/cli-core-lint":"1.0.165","@leanup/cli-core-test":"1.0.167","autoprefixer":"10.4.2","babel-loader":"8.2.3","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.7","postcss-loader":"4.3.0","prettier":"2.5.1","sass":"1.49.9","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.167","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-JN2IoxocLBktTWWSGMk15fY7+CkeClDNPsaVKF2rlHaU/M2Yc8+PLajV8QoHzLtdRfVoxHuU5RRuntyy2sg5zQ==","shasum":"93194dd143a6fb226ab4481b710fc7fabea1b091","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.167.tgz","fileCount":64,"unpackedSize":152161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKsk8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr8XA//cXK1cZHLxueWQF9yJ/VLOXthfS5XQVg4ek21h9Plssyqk1DK\r\nIzuJWjIVeNiGXNCwQ2TXuy3+TLMakAQ7STq4z5aaM0GQ79CG3aLVlGCKmV4j\r\nJdTdFUINm04dohJT1aWB2QPIuJginb/GEDbQ5TPQZanRtjfXsoathr0+rd8t\r\nB9f/TLiKZ4VQTCSBtOLS16KGAPfMhxHLMM88nJtb9Rj5memNE9ecctuOsYy8\r\n8Ilo4slz40nSS2AmsxSoTsnSxItPxax5eMOTsB/eORuUjL9kXBviYLWKNhX4\r\ns0qg4a/ZHVxZBHwpZdJqnFo7iy6EFfiQ8GgwIDwQF9h2RivLW5VsLehEf5ly\r\n+YHr7TNu3u+ah8czkNyhyvW67s7ZHJKoSz3Y5zwDNoKkjXJ5rEboPDeFQbaH\r\n0iMe7DkCPllP0pbHp+SMk+6dVo+jk26ot3YmpwKTN+C1rIow5GgWiTn29BZt\r\nwMaJCvwyacCJtD6swGHRGT1W2mvaCUrM6W+rwyYxZW0+fQgSHRLOoUEuQkab\r\nkEZ+xq4/q2tyGDW9FTLyFymA+eRGr5WHRduHo2pSGsX7vEnp8QYt1GsxBdIx\r\njvozViDEBpHPR9mk2uBbXEzHrYfU50F6r1V/3EVYjq2Zl2G/HoSJ5foGgOtu\r\nMuLOTPQIHBEC7G9X3x45JDGnJrW4gj7qDFA=\r\n=NOGW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3PmxdQ5utVOPg8k1vBl9cCWm5tKa0XxBK1D6N6nMEXQIhAOB2gJtl23a62QtAMOTK/Z5SMxENinWTgonPI6CthIEX"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.167_1646971196458_0.870710415849776"},"_hasShrinkwrap":false},"1.2.30":{"name":"@leanup/cli","version":"1.2.30","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.4.4","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.30","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-KbDjc4YiIWAyMU5scVq4XscGeg29qy7s18TbIq/NHB272OEwrpDS0ZFCAqpFuh4eIgPqRvfxZusDtLF221mjcQ==","shasum":"005d4f8e895c9f108a75e42bc62c69233a061310","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.30.tgz","fileCount":63,"unpackedSize":139811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKslrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr72Q//VuSpto65szC+4ma4pEiv+TC53yVS+KU/wJGDM0UKCb4EI3sz\r\nkgmF8mYa/eqdTNKA8rzejpou+bCvWexIXFOjrsIB2dUXGxVGt4XJQj1pIq1G\r\n4oEHaJ09vbBYMx3EzFKVCQkmhuOkfVkQH3RosxIRW+3n/BlA5quLvbsHut8m\r\na8bkQxZYjt85D1QY8GaBD2a3Z+3h8x3YkwepOC4RgNECBDEj+uKzsWamhcan\r\nJEGpHPTUOzNV1+EYlyAGaYBmsJANFVLSkRdVzyQqWscY/y2X8zwrsVf2DEQO\r\n9eln1iX5aqQOnlBI8MEI1lIuba6yAbJjq/ebjITgDT07FziZncnD+MxLpEgB\r\nHfs0X2KXduZESZORNqSg8ab6fWTVanCH1OCbmWGBFKY3hYVAmHcq5H+t5tYT\r\nSstzyBqRpoEMDuwcZZyukrzEJP3yJpg2KpU/Cpn3vyDbeb7IZVbpqRfbn/S8\r\nlH8udrSIhiyRcDNoALuofPzP1vcrPYDCt2BdykJLSKzwBRJG/Ow8GOmyLvXP\r\nobp5EWtcw2+SkN+/X+JAuA9KytGs17m/+k7eQT037gxZs05fj64pvYVnMbV1\r\nupwHQhAbIy7x2U6Tm6kZ6wekSxhb7ftX7NlQF7iK1/YdJafuFzTTvZ9bj0li\r\nUHt6moaDYoJWJGgg27pLuU8Kj9ZRS0FjKBA=\r\n=kgar\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDw9TPiAoU/sjFrWJI+Cq8FJA14+WZJBvVBKiU6YXTjDgIgVVZG7rOJfj1iaYvfvZ/Dp2mK5GqSII3pq00V12sauJI="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.30_1646971242789_0.28888886315767404"},"_hasShrinkwrap":false},"1.0.168":{"name":"@leanup/cli","version":"1.0.168","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.8","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.8","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.168","@leanup/cli-core-format":"1.0.168","@leanup/cli-core-lint":"1.0.168","@leanup/cli-core-test":"1.0.168","autoprefixer":"10.4.4","babel-loader":"8.2.4","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.12","postcss-loader":"4.3.0","prettier":"2.6.1","sass":"1.49.9","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.168","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-6ayv/KMQBEYgYCrFAAquHB55vGgxaNk3BeGV1IAUplrbkWZSsAimNch/CyKu5iYpuMvDVnjfRd5M2BPaq5oFWg==","shasum":"deeafe57d748995427cbb329e3ca4f6cea2bd539","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.168.tgz","fileCount":64,"unpackedSize":152162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQnutACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr5dQ/+LnLgcbxfXmMtQ0PePVXE2ZyGMfK/3w1VTWRC39ZG9IX8nB+M\r\ni5RUyyAxm5JucnB5kiVbthh95d46DUhCwyxOYJKJLRHAVZGHHWA7bzL2wanm\r\nwAJLGUmZw8pNHesbN+zIGKvSc7dSQu9fLjwSjoZyc81uDJlGSUpOB6CUWV/i\r\nvevqDvRtS27c58BG4egpECeigMcEpNJ7wYIk3CS5PE9RBJH261S/8jWtdYfN\r\n+SnHaXl+VGpNBHvnjWem1oBB9en4jHmkh1LukBzL5IZSBUSinP6wwlksGEgp\r\n/Bt9UH6OIOmlzl1TUHH3xsPNyd0K2F+TgrZ/TT3PofDsAbjsSnosxC2YoKFj\r\nXFd6PKHP+KtsypvXmNNNvYVIbRgIMTEZ7ZnQ/kDIyeTQcvG6riM1WdQywGsf\r\nXX17InwEy9G6xZtBmriNCgYUSowfba/fDpKROPWzk5cT4QEndLMBs8WX40R2\r\nbIy1isCZP8dgnjHpDW65IKnIq9pSlM6fFyQq/W30zXhjZ0/gCCZJNGya+c+C\r\nn26aKP2X+u7FqwoXRCtJeA57mw1bjXgGEqaN3ptCM740dUvB9d+e6KY/2TFs\r\npasXYP5i7e+GDOTPnhpnNLqUxYrCPO6ZmCRS49b3P4fTAZ8WCG/ygnW1Kab7\r\nLvoJmL5SAjJLFAmLJKP6LKyDWujlM9UlV3w=\r\n=r9a0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyzf1evFvbz5Pp5m6v2TiFFcn9H9jcCKLya8QOlE94lAiEAw1e+0UnUyZwO7wv6O5Q+US+4b5GucfoE9OaYA4tosTM="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.168_1648524205053_0.4302852987007173"},"_hasShrinkwrap":false},"1.1.62":{"name":"@leanup/cli","version":"1.1.62","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.5.1"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.4.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.62","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-koB/yLtUhaptYkKCX32r5p3vvHa5/WURbznI0LyyWk+1UwQolsIpZyaN8g46ZuTtC9HAc1TrAXS9eEuAdEo1Fw==","shasum":"2aa09f2d155bf1ab1cbd35d3a3e3c4b09b1a5865","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.62.tgz","fileCount":74,"unpackedSize":148750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQnu9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpR3xAAgx6WLK269cypFTRWmU9/xPepPO5PV1/yNzlJo5GR+MEhKmEY\r\nlNE8DHFjpEx1LFocH+buPIKTXghzhbhdnRe8rndjgZiejPY6PPA6jvh5G/xz\r\n/ifReaSR+sIIWbmWzZxZ0gBdUVdMR4e7ze8qRRGbKkG80K+gnnBgyGwvcEg+\r\nLGfGbwCgLQ/i42Ym6ofKtg8dwMokN0+cOCnwF1g6DHl69Fcpl/fTnhS7/Pa2\r\njvYjYuSSIHTWY2mBxsgNGoYq0PMmM6JNCkIQPC6IjlvsaGAdoLC1Thkw8+uR\r\nJzEl6q+XHwT4LP/odEZ8X39KDO1fREHNWCDlxFSNLvro40XBCeBtYShoIJ1O\r\nVKS6GfRdV0vdfGc/mXIYFLpjyWcfwpeo45LzFlujAW0Rr2Sdzm2b5JZ0Tcq1\r\n1GsnrZnq9U1wQNhLKJ8EjkqrM1+Xam5hBTDkSJOyNFvqQ9uAz9R82hpYol32\r\nOCS4H96A15yh1EK3+af5LK44Et2DsK59QOOXpWYTpt5aOugwhWR5ZN0J56UM\r\nqYs0aOXE+J3DqnoT3B6Kltet0FwCCCj7CS/f2ijfdJ4Sq9UQxl2346TxlO8x\r\nGmBMsaRSTe3gvrPNaZdHNQzj2U91ZQa7lbbtvzoWi+A8aq4Q4ghBqAWJ2uue\r\nrB8oAOHUez5d3yrVn8VOaLP5QtdTNm0xc/I=\r\n=Sm3d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAJbNRB3ncQmb2DJh1NOQFi5Yc3k02x/dZJsz81timKIAiEApXpODzsFNxVubJvl4szgqT0ivuqBGnrbfHdDU34IEkk="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.62_1648524221628_0.3804426108042207"},"_hasShrinkwrap":false},"1.3.8":{"name":"@leanup/cli","version":"1.3.8","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.1.0","deepmerge":"4.2.2","prettier":"2.6.1"},"devDependencies":{"@types/node":"17.0.23","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.8","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Z+tqW0qRjWLRn8YdYFVUi1BNhpExJl+/F3lCxggyFRpVyg9Dr6Gtsc7TPbQmAvCyG2mx2nMeY2ohXk8bPVtn0w==","shasum":"5c23f98c2dd81bcb4dbc92583d699a204c0cf346","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.8.tgz","fileCount":63,"unpackedSize":140035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQnvXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4uA/+MMRqku2AiylqNcfso3As7Ip9BKEaw+XZ8QvS1RZwQkCPA04Z\r\nghkHGbPX4VLaJUllZ32/ChJT0gVsKvem5fSJ2A2IGRQZ7bYqlvoWpjmWVnWL\r\nqcArYhIy0qnPWM0E2X/rNG/mc6PmSfZbz3ymbLL0COYU8sY7WnA1v1hFCfgq\r\ns8jwxGGDIP5QGUCYTqBroGEXI91cdWNBL3vi6UZjNJMFD014cOoKMcvaOxIK\r\naIei9MAS/lqA3O7hOSpeP5Iqkm6BcK2qUGcdLzY3ynxkKPRg12cjHxMrq4Ig\r\n2fdcS41SdEokk/5XVy8RpaaWFjnEAW6xeeADp9Sr2I5jHzBd0QSZ5btUsIUp\r\nxaripTjisogzUKuXPZFV7oidLbzHOyOzuJS/qLjxNv515N0u/WH6/JEIj/J5\r\n5AUAqplH/XtDqWa5LQoEWEyYvOpU/Dg5DRIWi6X3AGNgnB+LWNokenpi2/iG\r\nhbt9vCW7P5S98iCmwZnVOmFIHoQUkjHMyeE+o2M/pEuUpET7EqLVTN9OwELb\r\nlXnThD03KkVb6JOGjZ2R1RElo0k/oBCaYzWDRkgx2Kae2e3f4cRiaOup/t5E\r\n5b1UHEiDDau1ggb1AMBYkojthxt7auRMBw76in0XwZo5MelVb5oQr+utwT8q\r\nJkW3cfkoTPcCwkOsDZPNKTLlhhwxY90Oa40=\r\n=Xoso\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJth/7JJqhFhcgFGTlEqIC0mLYZbLdYpCWIY6WpR4bCAiAUUuigFQI2LAfoFycwgspibMpCYs8jjVDiyJoFd10KXQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.8_1648524247679_0.2783389812423789"},"_hasShrinkwrap":false},"2.0.0-rc.43":{"name":"@leanup/cli","version":"2.0.0-rc.43","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.1.0","deepmerge":"4.2.2","prettier":"2.6.1"},"devDependencies":{"@types/node":"17.0.23","@types/prettier":"2.4.4","typescript":"4.6.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.43","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-sglAMXPYWC0hLVNZSdBcC/MFn8sXPGxwbvT412ZgZuoRmysY5hf0YmrKXH6sfUU9lA6Yfn/3v127qmEcRsoKwg==","shasum":"8ecb56d5b7761f23da620c009dac8e564528a831","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.43.tgz","fileCount":62,"unpackedSize":139794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQnvoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjURAAgWGz6NJVPCuNgVsW9dXO8I5+nnCQ1/qzeoKXwobabBjJBDQ7\r\n3TP1EPzTl97c0kcTeM1SwCVXU31mbdZ7ibYJxvb7xJCveCFomswYQq9FZou6\r\nooPm58ow6y6iGvyyKf1Q4qvNAUve+cl1DdvM9A+liKSEjnkZe6IRA0QEfkm/\r\nu5RRKpz4TNyp0mrdDXX79Qcx67UufqS4rIlc5Oa/i/7BNFM2RaCcCm0JEHhP\r\n1+Q/i7MSa3xsMtlbeLkb+jaz8zwDjVBUSTeeS3tfu5AA0IigJUSnmOfvx+tu\r\nLk8nJbxPu33kvWHmpqgdk0y+3uRZ+0FB3n3+7/zugvlK1PFEDHhmWLCMQIyg\r\n8ke+dpkp5XROawzOXT2E1bjKSodRM+bkt9vDazkusZP6vBOdiUiuCtKlD0yg\r\nE8LFnuDTQfb7j9eIYh4QZMEobXrl9OX+vEHDnT2fxfrNukaeV6FW+Zujj/7c\r\ncvphkZvXJyw0yv7q3WFqtE3pvqfdItFasgYqlltWm6qwRfVGA/aG4CmLFo25\r\nxqlMFqFljH3dAGJgUYgFfWwUDHf7+vBNyrVE6lof1+orplzXywSaQgvXAqH6\r\nGPQDIgnk0b/4+Tx20dOuaH7i4i+hiHs9fWuPXdtZh8IEd35ORzNdKSs6EFbt\r\nFNpdOtbHyUkw48nObu5F5cc9xnUitGSBA0c=\r\n=CWV6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYYzBzWRABH9BcOKxDb+sMUB6LjdnhWz70pqIextOlfQIgdfZN420fG0ps3MLLW4bPlaoDem6eg8dt0Z2IjJTazng="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.43_1648524264030_0.09664665839404885"},"_hasShrinkwrap":false},"1.2.31":{"name":"@leanup/cli","version":"1.2.31","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.1"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.4.4","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.31","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-vhr4LBg4QOhGnpSZ/09eHBYBvve94Y+XIF+8jYzrE0r6geOee5OjY92IFigGNibFZnHRwM6R90gZ+v9I0qVD3Q==","shasum":"f840386eb465f68f36645ec0b0efffab495ed773","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.31.tgz","fileCount":63,"unpackedSize":139811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQnv7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZ4g//fmITvNsD50+fSZfY9jFiCT/iLT1UfCEwbncWY87juWO/fcsS\r\n63WQGsvMFoQjVsgBStB5ewIdzAsmXQ2L349myE7jbdOsURxbJcGDzE+gTS7D\r\nxinacGW9eKYqDD5chQ7+3SbLaY/dHFfjb6iSFfyH20ycS8uJYab26YXMt5Zy\r\nGDw95nqnIyVrbZGlrE7K62pBjUcwRkHw2UtekRA5WEk4N+CaU3h+0DKnMix+\r\nxITP9kVfZOlrthBBXrs9U/XgzLtLYxvoBjc3fxJRv/GBg7jzOY+/i6OhPgnM\r\npK7iE69YTndDffIcj0SfUT/dnwzUNL+UIBqht2bmIV+S+Z8zlYs3pMtzVDJz\r\nLQ/eNZH/cd6svqOGmeKUAAOcLXPKS44c1xfK6elqYEMmXiCvLl3VNPWzTEKg\r\nyDunRLk6uegwVZA0jwYECFrDHa2cJJhvbk1el2miefDZDj+BZBfQAfvIc+yH\r\n9RS4zKxnxcuQpRVLqZd8kd3xdlzT0XBHiuneoKEyvfVFmloM6XaljhHRJ5WB\r\n8vcpkJGTmLDUkcbaEzr3ss5RQ0c2IgHOBUDVHqSFbdstPXC6VWahZ2u0esGK\r\nkWsTvkfxSzEgmd+zMI/kvfOduKY0YhcdBE2+WPWkuFNYVGX5Dp1Nwzq/VBFw\r\nsSGzBXTcN+z5rst7Kmwje5BCT2TbRuo21Xg=\r\n=twR8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC418ugOIRCExhyl//1bb2hYmO94i14l6dk0Z/tk4vG5QIhAL3o5sC60VOs0E2aZCsu40jSFXWrowtZSk69NNBMrRml"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.31_1648524283242_0.47824631301189213"},"_hasShrinkwrap":false},"1.0.169":{"name":"@leanup/cli","version":"1.0.169","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.8","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.8","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.168","@leanup/cli-core-format":"1.0.168","@leanup/cli-core-lint":"1.0.168","@leanup/cli-core-test":"1.0.169","autoprefixer":"10.4.4","babel-loader":"8.2.4","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.12","postcss-loader":"4.3.0","prettier":"2.6.1","sass":"1.49.9","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.169","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-lO/7Xk10c4dZzkv7Lh7rOEj2rt0mltOGLLLJf2ZRCVRHx0UJvVdCEQRhd1znDxxLTObB6pLBABPUYJXzQTuFjw==","shasum":"acd91e412bba58d387f276713964bfd6493bfdd8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.169.tgz","fileCount":64,"unpackedSize":152162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFVujPJtVyObyS5R4a3O51fDXGhJm2T2QWqUPZADk+szAiEAzJZvlDeG45vNmNbZzAb36KCFC4qBciuYo9+XxI8v+h8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRJh7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq3Sg/+JJHuQ+Wf5mpcsbc5sKDZhrlR1Hwh5IBwF15LIgBesr62bCxR\r\nvnoP0JbONELpoRan2c6slOx5nPB4UvhVewDPLtF0M54dX+pF6/cdez92DDx9\r\nHRxZK42lgvb527wXC5dRw3qK8r4mnh513iCtjsMRuwWEP+9GHWdr8J1RQGrK\r\ncC7HlFAcXvREwNQmB8Jrtfh0XF4LLXZnxiBcs73NmDuZiAHvCdlpWhLR4+IJ\r\nr+CKZY9ZT0zQ/gluVPVxxYGscag6Vk9JD78/P0pXBT3/UPRlabsZ6+B6acng\r\nwLza86/RG5bhZd8IH7YbCxD72H6QYawIYBXYieoua9GqsH50pl+lWdQ4A3vm\r\n/DJKJytBaYWIkZIHoU6hQSGa6DN5W0gRlfLKLPI7sF/3XUYN/WS+3EpiSR/+\r\nKugyVY5EH6vztK+XtPcFQ4/PN+HUIqSLZrqqUUyG3AdWoL9a559L7PJcQcw7\r\nhMa2dvolkPcnT8ztNEn/3+a4ELWRxKbHd2Q7rTusC8dpinvTa1H2vmAR2EAr\r\nL5Wq3G93xe8zMIDB5wriqkFlPKotFNKPv1ZydGsLBZB3BnNmU5aAEE3YuD6t\r\nqqieGSNaFahtKtgmxL5ULV+X7yKJYsCpw4WiO3WQ1DlbvH7rUlqIzX7xjMkL\r\nLSNMrI2VUZ70NS0oDRhQmpiz6+HAP6Haihk=\r\n=vBfW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.169_1648662651048_0.18943909635311762"},"_hasShrinkwrap":false},"1.1.63":{"name":"@leanup/cli","version":"1.1.63","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.1"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.4.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.63","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Vx38KFQmOCq8opFurplKnTJ9Fg8R85XJqqixG7kBcvq7WU16FLnKV3uFOhPvmJClsYWf7sn/qwJxpNraYoS3Tw==","shasum":"22ce0affd6147154586aa6d046d721e31b7c4d08","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.63.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4ao1a+JEvZXojNc5jiuRcxGS8HLcqb6EcU/X3ibGaEwIhAPlcRaLeeitxMsuIU5V6NYL42E8jkRTq0bBtbLSZx+/9"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRJivACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqt2Q//cBHsaYWHk/aFVSQ1TCMrUPSpsAHUjoS5+NWo9mV2yqQCbwfF\r\nWEQp77ayyrHcIdO5ZkCg/z/qZR1TM970u+KP8uqAs4Y5T6J+P9cjnBwSBdrL\r\n3e8RmchxsrD0UZFJbYK5eOXNuCJ85p25E4MGL2sqhiDTBdqO0TtrwjYsoHuT\r\nZH9hfEf76u+OCCPbGbL4F1iHuMku8dJX40sjKtS+tmkI4SnzaWY5NMazDDkh\r\nXdE/RWaPxoixiWx8B6xul+OjPfJwcsOMj9kkADRtKRInJz4L5BW5+yEYo2ZP\r\nCeflAANMMRl+MvUMJc3QBVjZVZZHhOFKJ+kfarJHmf0kgRCERflUJ8BPh355\r\n5L2BE0gv7xiHTVb49uZP9jCktakDq6n791r4voytFgdOTqh8unBB4P4pyBY8\r\nRNzQZxRivUXmb4nk2YGWG6+TRbfniiUXQeLT5Qwj76xukpyS5svULVQ1NBm/\r\nhG4TIBKGKqU7MrP5q0pddTGL/ACkQyNfi5ikwkumlMd/2fKjPvx7zqfH//8v\r\nr6cJXYXUMeeyaajimZtdNHkZWJpw9N7XvC/gtTi80W6ovtkwsjJHI6LvrLxc\r\nNLa/4/knKtC4IkX25NLeSdO+celugsRjXacCeUkVJm4tCUsriUXVkKFIIz5H\r\nvPJ1YE9a5ifQ+88YEPSuoOf/a3wZukZLYv8=\r\n=lNlT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.63_1648662703258_0.1740707268752919"},"_hasShrinkwrap":false},"2.0.0-rc.44":{"name":"@leanup/cli","version":"2.0.0-rc.44","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.1.0","deepmerge":"4.2.2","prettier":"2.6.1"},"devDependencies":{"@types/node":"17.0.23","@types/prettier":"2.4.4","typescript":"4.6.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.44","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-YCmbb9TJ1khdqUql8VlmxIl/2pkCDn9OniiuLJmiiF21GPyS8vwAPY1AI45oPSuak4mvhPVk5Nm7MNZNzgYNNA==","shasum":"77c4fcfc70dd7531e682b4f66ba391c7b2111642","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.44.tgz","fileCount":62,"unpackedSize":139794,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICLq2Jnx4wQGzUiNStJWFnwuMbLhcSqQ5y9Ek85L6HH5AiEAs/GXhczSzqNGPOyqm7b6+Ma+pfhDge13UdO0sHtE/Nw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRJjGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqwqg/9Fui79JdzM5AVXq0QcuPHonPCpxEK3JlQ5dW9p3M2wwnJdMKz\r\noYBFGbyxnVrtJNSXioZxYrawCosMPzRVi2kU5wGvFP+3Ak1dxJi7YNs5uc3B\r\nLEnOBqfv1jPc/MwbJ9i/VwtOb4H7CDJ8zyqcU5V4bRuilBqk0lMxF7Fv+t8C\r\nfa+MGFidJOvvYpPp/HFLaASxHQ/Px7TpH6eh2WtkOvcgJMbNOxxzJzf7aYmR\r\nR1Lidkj7Pts48t16ZW6Aw/6DbCi1/uVFRlBBdUvYjO3ArmOvk+v0p+9rg4R9\r\nnoJoomZf1Fj6N1v6159NB3w3ELyiF+e43gM5SqGvuF+6DlC/spjjbB5+6w5K\r\njM4boPqrKAgOrnIuAbKbzgr6MVKIsw369OAUFW9c3HByfU8RQttx3gevB/Fl\r\nWWHStVsWhRGoJHCpqNKG7ZjrRKrPxmIfqWqmo3Ce4EvAoOtijTsb9uIpoQO6\r\nheuk8ZZBoohl1hqCONbcA7e/K4Muykx0YRl7S3BlbSYa8e5P/FBCG8Bf+ybl\r\nHSQEfcFey+Horu3RL08Q9bK/MEtD4sH6Q23KeIS52kf89AeopI8bP7Azjb+4\r\nsX7yZHW2wzPonnRkYIk3PY+J+dNLEYN0QDClv1IwTk4cjUfWXK0NiJsLhr1e\r\nHuM+gVpxLFBmwEU62JwKIxUwpX10XPMwObk=\r\n=FFOY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.44_1648662725987_0.47110554071298316"},"_hasShrinkwrap":false},"1.3.9":{"name":"@leanup/cli","version":"1.3.9","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.1.0","deepmerge":"4.2.2","prettier":"2.6.1"},"devDependencies":{"@types/node":"17.0.23","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.9","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-XQ/UX4B23bIiUMJi75aPZ0OOy886k7bzkaf3GboGysfVxZTmh5llFFNx4V5dgpZ2sWwZ2NTZcIb867xdBTzvug==","shasum":"976481f4cfd78da9749fbb5fda723b6c1010d303","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.9.tgz","fileCount":63,"unpackedSize":140035,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAON/n25qwAVM7YVuC00sRhhxe8yHuNUGEyJRkDePEtrAiEA/M2Mg1GLEn7M9p+Ls8nDqWOKy4xLaz8Gq0JyMBy2wLo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRJjOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqVoA//YQEHv0r5xw3OhATJXzFfk8w+XvgNcmWalrfVA4ibC/aXOlc9\r\n2FkGCM0jJf2STfwgksBHZb2xLyUAEBdc+oIuF1Qny5+La5Zk3QKqr95PA8Pa\r\nMibocyzuNb9gH3aTQailZPW2TZg3wwXhfoDRySHWPwdqfiZqT3kNvvhcr8//\r\n5M5kuAc2zdojta/WtWLO4xpds5ceVSoyUC0lgjJboYg554sJX7AOCZSCDZtR\r\nGh3mUTzhZ4YUX1arqdZ/pomytO5k5OQO/+Z+V09pfZwlwulIeTAwQnvUOAJF\r\nQm3nAeufVfZgIYERpr71lWebrIFcWc/4Ai84cIpOhU0rxZt7/84jMsmrkSoS\r\nROVj6TUik2FjCrllyh4O74YQeMbjLiD5bJpnampnd7DyWoZG95cUlMtJFbHu\r\nhKW5qQzaX3x7Vy++WhHYVlVDzFJYk4OeVLRW065615CnbTsXpFg/PKBvpNDX\r\nyu1l48T0x/pZzA8141Ki5ILoZMC20DGCeQvbDAkmMG7dlPCtajgUrNMEoJgh\r\nhN0V9JoF2N5DnvuZFY57NcCckJggtK09luIdsVDy2TF70ReOrZEc/xz7QbYL\r\nfVQX2M6jVE6fjNkkk+AZzv7btTFSDVGl+8XINeKIJGl2Mk8FenKMkMrcMTZO\r\ndAGfc6q04IyXU668/kFze43z/kYEX28KoDU=\r\n=1L5N\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.9_1648662734534_0.990005256840351"},"_hasShrinkwrap":false},"1.2.32":{"name":"@leanup/cli","version":"1.2.32","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.1"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.4.4","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.32","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-RkLAVFXAcfWw0T8+3tkh8Mexh58RwIyaq9siRydaQxTB5aLRVuR9ogR0Pb+h8dL7HF71kBf+7PlSscJWADrXIA==","shasum":"98694fe93b3b1f6459af3a1b8642a21c127a9b12","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.32.tgz","fileCount":63,"unpackedSize":139811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC01sUOh/s+mIcUGgsjy0aIZxalpxajCwME9MLdiaeddgIgdM82eqQaR0dRXjgq9BGksz4LXXOXyyfGDdWW00m4lGM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRJkMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmojFQ/9HT4rem8yc0XbACWGkD4EhmbCiAYAgGryZzGQDR1GJRpPkHuN\r\n7LsXOohaqgYyM1g55M+/jDGB2jahRMqiTh4SJKA9oaABaC4LhDNjOXB7KKQN\r\n/ojQkl3UuuihOObfEHvec3nsw7MMP7X6XbWqXS+EXHUBHMbO0wl5pF3alCgv\r\npazsyi+MExeeugsKhovBj1TOBonC0PXOzS2958th1V2781nETqREdCssfKGE\r\nyBAA0b2cJVsFK6hwDUEBj2TEAHPE8wdMh7quk8akHyftjc1vk26DSz/SWBaU\r\npjll8ync4Kvu3NlMy1t3wutttZZaV+q7Bj3ylls2UjeBeUlzF+lxEim3KEsu\r\nkBvvyhNKTDD2WdPzVFPQM1ai2St4NndrUDisPO+hOpBDBrFxDk8mV61iO1wO\r\nPobTnqsx2DcrHUzIEZ3tl6TaUZZ52hjcdxhmO8VcY+f+faKAJlzAH2adBM66\r\n/cyhIs/0WDNxD6T5I04zmRDdXsrzo9LHz/UJ1IkljyYsVvM6orFP2zvoa3nK\r\nxQPd72nbgxSL1Vy5shdft0Ty8EQmUBkGgl1OEYiEWRQZ1+9gll6hd/Jqokt1\r\nLMjTnAFiNQkMpQM89dLKrfB6JUOEPbLKAKC8nn7irJuRVlV2A82Rzru9GeFj\r\ntaOsTNAtmSd2JVHU2qUJFsQfVG6JSTWPBzE=\r\n=SBtx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.32_1648662796501_0.7725656886533541"},"_hasShrinkwrap":false},"1.0.170":{"name":"@leanup/cli","version":"1.0.170","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.8","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.8","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.170","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.168","@leanup/cli-core-test":"1.0.170","autoprefixer":"10.4.4","babel-loader":"8.2.4","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.12","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.49.11","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.170","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-uCPbwvLnMja9qvjR4XKb+hoZhXeO6IQ2mRdaVlh8Vtx+5lUU/TW+pXFu1YfSPkVmowFTSmaF9U2uyA3jVtVJtg==","shasum":"9320d0ef4c47253966fe97f540ca7d02502a9ee7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.170.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQDjg7msfJfqWsivCcsiP9NdFYAYRD0Gxdm1t6sKX+TkxQIfG7hdhHgM7yM+hFO0DFiTCUrSJQzi1uMwklZhQMKLWQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTv2XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYHRAAoMKeVNUU5bonZp/KSC0PGavDZc0H1Sqth0ipXsUMUEAII77M\r\nDwbAvcJHCwV9sV41+OzJ06Y0TsqbvlF9wwDwHskN8dwsza92l0F6G3wFAdEL\r\n3cv/kbFqYysdVUWDPP/KR9C8KrkATtgtX6uaU9WVuZp7GIMlYl82Po5FkGAm\r\n3BbB//vPKFAkpnoig/rKVVks87RWVI6vKYnFfIEMznTKRFqkZNGpOvs68wW1\r\ntpIcT6vGN1HcdN9maoyb5KTuQZyL0/E9Ss++5E0dGpB9GyoCFkdPf6wv7fxV\r\nn8Fi603DOHswrZSU7JOpdb15u8LxWypU1syJFDTJGa40mbsqSCEmioewlVln\r\nnYMn/NqqIV/LynTa0yeusYJ3/G1/dLLitd3gbvjB+WR0MaZdtpfnjookR9sH\r\nkPo8ppI9dWRzPnnHso2LkCYeecHNyuqiiFQwEr6DYU893HgsiUDSGnc3rudu\r\nooaezFto9bBt4FlGx18BdmN4iPw+7k+u3Oa4EqPwXsVaLni8+uERpZ+nh2py\r\nLKAnJjWIb5l92asOzId/sVjPweWlztiScMQYboBn0BjQIhehEMvgvBxJbeWt\r\ngDJBCbiaeUT3vBt1Yw5bA6hLPRIL5NTf60orXmlECa7+8m7R+qKbyKTFurgD\r\n+z6sEAgkkIS4xjpP4kfYC4rGkwD+ZVzDtR4=\r\n=iZ1b\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.170_1649343895518_0.03585964958938592"},"_hasShrinkwrap":false},"2.0.0-rc.45":{"name":"@leanup/cli","version":"2.0.0-rc.45","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.1.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.23","@types/prettier":"2.4.4","typescript":"4.6.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.45","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-wrvhf/DmY7ZpK+n1sOqAd9mI/ql67DtjJAg6RDShr5+r1u4P6aGqiPlu1YMZj4Ytl7rr0Rn1hzsHJoMe/TEM2A==","shasum":"c2b12cbd02917be71ceba0a7a7d14a4f692190c8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.45.tgz","fileCount":62,"unpackedSize":139795,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvptiAd08zlFX9JmvqCZbOggL3Jaui3dpKv7syNVsH/wIgRwuGv1jVQws7rvvyOkaazOank5CxKfRuexTCfugoUm0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTv3AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqz/g/+O9R6IQGHjuYHM2FtPSFhbpqRxZBZHw/Ure/SPKdOYdBMSmal\r\nCDit0LqjeHrvMQaKXJ7ZLKFDhvVsqfctHXhjBJ7S67iMWyHUvNxfseCfLr35\r\njmuadc4mmw80ctvBwjsiyJjEthlEE6mT7U5l6vOjE4TmYLXKQ866gm7UNLd+\r\nRRiY8YIa1hlQuHRaPK5kMmtUAGnO1ele48Re4EvZcwgci9sDEfoLbx8KFSH4\r\nvf83GRtOn/HB7ynyFxEQFNicsIp17ay1rOsZfcWqaxT7XJLTkpoNXf0L0lIF\r\nR1FijhEphDXByseNvJLLi9LMyJsqMVwmaj7tjAtmmBWHVVp0yUYwTCgLVqzh\r\n2eLxSsvSoiWULt/ekw1gP9h9byN+b7jKPyn1fKrKkBRF/SJRtspt4iNp0Ewf\r\ncC3J2xwigzxc2ewT78ubQQ34ELWwuBgBT40h1WY3UcXgZATkJDNnoaW3FJ0Z\r\nxXt32BdPR/Wpm6n0zxc5j5TR78ttxchIm2htmzjgbEGAiaWCv9mjfQqyCp9Z\r\n+1f+6HxjUE4zF5KpGeW/ehbDw0CnmwltoXgIHSLODNfDVh0p5GfK88OJ9Wpc\r\nZ6s95mEkOw4sII8sl9CCNtCxjT71RYt3+EsM5woI7KZtZvnO4iR/O5s6L1nE\r\n6uIA6gNp0cVE3JEvAb0GOCldgMXe2Zw7iJg=\r\n=O2D0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.45_1649343935468_0.7743035728105878"},"_hasShrinkwrap":false},"1.3.10":{"name":"@leanup/cli","version":"1.3.10","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.1.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.23","@types/prettier":"2.4.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.10","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-3w7EpAvBlJij5g5T5N/ynXiHYrWY/PHNFcVn+brbzWUkpooNnGm3222SK/Nj5jqLR2X4/j52voSzLCAA3Knkpg==","shasum":"b1392217c7348059dec177e704d751ccb4d693c4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.10.tgz","fileCount":63,"unpackedSize":140048,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+TAKxUTTgRfVgMdWc29jmJZ7JVqdrdtqqZ3V/Z+Af0AIgCRAJ5uAOhRpP4Y7T20PPRV5WRAlezW7p3jgxQhBEHFs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTv3WACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpONBAAkUWGNaRc8mSS+pLvdV2Y2V+pXMm6ypqMQP4aV41NXAGVubfr\r\nFqAXFuyiwjDBnrQax1wVpB7dUd6FQmw6T4wsGKp3FqRsfMUFGk8hO8Cm2MJQ\r\njjPXhIre8KwO1r5wbRfNXN6lNi/6GCadx4Iyq8mGkYJJJ7Inb3DmD3lqsyx1\r\nNo0h6lY+p3ggp0nBAZv0dnU2DloP+j5gQP/jhV0vCyJDaMQ62oiES72gTsMS\r\nobUv611MAJGprgEkK10IKb97+8EIK4Q1+JhKiQTwVhTst+AoA1RDRojRp7dG\r\nAFrmEsjNhcb9hb05kqjtzok0wWsxv+0rdhXrqLljyCfFK6MFlznx1UOIgStN\r\neQkhCF2oIlejdh9nbVRH7l+AzIcFpP6MicqKc7QZuI8hy/8W38/4xOY+0C0Q\r\ntEv4Zlq6yDzPLhWMbM6q+/Tj0B4t+9A/pzYhITKbuD3rR3dLHXXwuT4COTyi\r\na4jbTmPJuB5nF65u2IKg1ZkoG9Twu9qP/fTysFfVFCS/DVtLrb4y5ETH9w9L\r\nHKQl6K0IF154WxokhkiCiFUxWVVUkz/DUmWbPRYjAmUeFfb2lfo3tyi87Qxs\r\nca8kv1U06eR1tyu4zNmn47TX9vqJ9xemqncatWGi9S3iAAgUWKV77q1FhL1c\r\nygsl24EvWthhkq7xK6pyAPt50p8oyV7ADyg=\r\n=WSi4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.10_1649343958018_0.022198560104613074"},"_hasShrinkwrap":false},"1.1.64":{"name":"@leanup/cli","version":"1.1.64","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.4.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.64","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-gbMJL7uTxjpovTudq4Zdzn7YDJoinCb9yhPBGzk7WeEdySApG1RNq+9j9iM/8nbvwM4O7n99FXZtdz/2iRtTmA==","shasum":"e3a531dbe27929d8596f169e805cbb308832418c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.64.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAcnf8iy6moqNzbz4HawIAyyKOTSJ1CznWWrf4cVxvHGAiAbsWz+q0HsWQUl366qNIQWOKOKWvvuF4hyXpAIdgLM/Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTxDEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHCQ/9Eq7hj4ENcaPd65lOwtijb2rwM26ytYFIDJbnNbKpllhp3sF7\r\nzuHeMX7RYuYvjBjKn5fqrnnNpZlQno0Zn3+cFHvlj2dX58Lgd7L/JZlio+Uz\r\nDqcmcmQBbk2HNW+uweIxzgh2xiC2DGnEmhjzWJWpoRcAfVgs6IOsUl3q/a1y\r\nYraBgKq/kCDdYbMiFrRmwihBgBx4boA9bAQXaBYp9hiXYKwimK6yE0pb4a+G\r\nHYnRyZaODaeEKhI5L4I/RqgTlCAxTrXU9aufVRUzTXswxa71b//sJzvyXTtl\r\nLfXmJGvAO+qmW/FqTzNj3ZdiG/CvooSvCOTlXh3JB5/zbKhJ0tiUyzXCpt9C\r\nuggiVa6JJ5ByiIDOtNvLVpUwLXvGpuHuxVt8+km3dkUMkFqotOJ5N1avQpb+\r\nDyFKx3uzBONwZedxh8sQzeUUwNjpHEXeBFCWFhIlAd1xraEwJnw8JxlE5ZtR\r\nB0SB/FFLvKcpoiSiNQaU1RRpBVv/sp98DYri5GSahgs7p8fBBYoYKO2XIlAf\r\nPIuaVNBnva0fNRgMTFetYVWQp2Of6sWYNeieWhjb5CWs9SprhsLK6ZdwzWel\r\nv1CmEqWa4xRhn24qhJNT35o+DK3NpULal898jbtSg/POUx+EuQxw3XWyloTX\r\nnJHdIAHuZosgUahmoqZBgDt1jSsc0BwnbP0=\r\n=ERzE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.64_1649348804115_0.9845964259840956"},"_hasShrinkwrap":false},"1.2.33":{"name":"@leanup/cli","version":"1.2.33","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.4.4","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.33","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-ptHpWxXxICsW4uoAr/HWWoW3N76L80ucIAI/SOpjnCE/h06IYumaJJGUflr+8T0TVv2NfaJZO3rQYUCAO5x8Dg==","shasum":"1d1b2eafd8d82f55b8c74a6a4544035ea694d8bb","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.33.tgz","fileCount":63,"unpackedSize":139811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF6WzIlSbQDVIXD1OPDITuSiQvjmlpDd2OJy58WLt5huAiBfrzjaG4F/mnjWXbOwAyuDjVPc3W/4NmKLzCtzp+OJuw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTxEyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQoQ/9F41k/NFFqW65Fh/ClzXfPtNs9erY4IQPJFcw+Eq8pUwi6Q3e\r\nPnJ0/zv6d0mBcKm5C4wpkSIsgNWc8xHWKw4nRzj4ILGeICF7PSTEg9cjAU2I\r\nTwj++qaSrcIrRJUPrNpOjE55Mocqaa2TOvWQjjPDio8VSqcSnfqk5g4hYAAp\r\nXFqZhnJHRG2cmE7ks0gUZuUfgT7lK4DGtmVCmf8WT+7hcVX7ahi6uZw9adt4\r\n0/wvUM3jzxxV37CUQt1ervq/mGRk8ntJcNwTUNyuRJPXXD3v44xyJWdbDmc/\r\nJzeQEtcDzbvEvepI4v+HG/NrrpKVv2gphBIotpi8+hhtiAbD30HH9wVrXtOK\r\nGp7mOVr3Hgw2EsI2OnoGxlrIr0aTwIjDXc059IEw33uA4G0GCgJbPNU3jEgI\r\n72q6ZdkmJwpIVjv3vJicJtiTx0YzwZxETRIo0UAfVhwlc4kOnH2gQk7wuNcp\r\nZRbEszlzcwzN1tbtAVPIjuKgTYFHqdY0AvrLkejWrrgDmIcHW3MFA0nqsTUs\r\nfPiH+h3LReWnYFCCVmPDJh4L08v0HIIHjuDqGuBIVMspQHBEboDZcaQCH6Mq\r\nN5PFkPhhO0o99M4tC3kDuMqO7HF49gnGIXJmtPibjciNhyA8OjFKYoxafIh7\r\n/D3RXHZbXqOC7si0IiUAU6leI6oautOxJL0=\r\n=055K\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.33_1649348913622_0.462747000842628"},"_hasShrinkwrap":false},"1.0.171":{"name":"@leanup/cli","version":"1.0.171","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.9","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.9","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.171","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.171","@leanup/cli-core-test":"1.0.171","autoprefixer":"10.4.4","babel-loader":"8.2.4","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.12","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.50.0","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.171","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-5KA4qFV1hAERyO36Cp9kVrH8SvRziGkR6uBln0p9GFo0DMFOL8C1RkKcalyMFPU9hL3GRHph90IaVJx/WcSStg==","shasum":"7da7bd3df2079cac6b47229589dc2a67b3bd2ee5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.171.tgz","fileCount":64,"unpackedSize":152162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtPsMzEMwhju5njd/eOiNo/KbSDQMEPZxIbCF6FnMVHQIhAPgsnDpRcgmdy2YlWbEWX5mH7Xgc+lXfmBnEmz+sC6Hd"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWbUnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqy3A//R/PtscAdpYpaCMTEgghal9MH2loYs7jfsKH4lEFRhTr94nTY\r\nV1Rc6TGi2gkn8De5S+XTn5pGZTRNJxjWa8Y8U7IMq6KooKOMOLVEEHnZEklQ\r\n6YJbPBLZ/Njrio2ame9Ri9nDPTVr6psuTCt9XhJ+JMqStryNJO3IlkIAbyDp\r\nBz2gMHgivOyHjQbrMRsgbxD2FUrvIJGIBT/NgWjV+r0+EBH1gaLBGk4W2VZX\r\nidD8GD4R5nh3ZtzPcec1cOrOVehdWAMSnAP8LBhk1NIeoShbf9GIigWIzA0l\r\n070Zng5r4hgRQ0QptCTLjQDHxQszywKtcz3C8QBcydpuyoBSKl5FZIt2YBSZ\r\nZsDTftw4z9hq5stbL0An+MGP/Exb3X/zmEllgl518Jm65yeNyIl1sYi0lmbf\r\nqpHE0j4wlQVs72eehWcXC9Fo8T4MNqT9NA1IssoWukSqay9RAWvKKo2RR0BW\r\nD4C3jQe3rcklQV3VOzLCVPpsUtNWy3ZKDOFkoX3CNYQToQOwjCNbJYifJrRv\r\nBT7ues44dY2JgFsCrNmnoKLPuVvHqeg/Y3BYlqpoInqCyNEofl3miLi097mY\r\nbSENM0cdWRzHalxe/F4MTFRtMQIe5LvtczcziseewuNmCsSh95YF4AAwajGD\r\nVSeQbM076UISsgIuTRj5Wb2kEnMlpzLKkxk=\r\n=GMgQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.171_1650046247270_0.2107376860231538"},"_hasShrinkwrap":false},"1.1.65":{"name":"@leanup/cli","version":"1.1.65","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.6.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.65","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Eu42fv3/4GChpyXWnoAoCqkEUnhDtSVuoqu1m48ZF9rczJ6o0sCVeVsSj8VuiG2N9ihy/DeFVY2Xz3tSRvcHeg==","shasum":"3d54acc48c614f897695f26b22adffb46953de64","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.65.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF93G8eLiX6ESdTMQN2piTu2Q0chshBCMJ79F2HUGTQWAiEAn0FQ4++vOjKzIDBZS+btfunpWLIBbjOy0Jfa7HcTN38="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWbVeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJXg//ZXeiP4zpf9osdKAVfIWhUT30SWxwp3aYWvkin8jLCeFVykWA\r\nLTv06QYnj7T4mEynZRXYTWBVe6rgQ18vjMd1oTFSaGNfjzZMEs4p9MIHi/oV\r\ni+VQUIiUAE+EVoLHmdqUDg8tDy84Sms73w27xKb7l8x8iZ+i+y8PwPn+2b8J\r\nji1L20DvuE/1jXHfC/i474pAd7Jd1FaisWxCS6c6OjeWCIPxBXIh39huppuV\r\nMo18VZesYzbr2nrvZaIdiOlnpIcmCt8ZwK4d5pXd8OBhVQ17Z9ySH0HAI0jT\r\n+ng3Eo4Sm6yS8wFNuZP47+pCyhrmv+2ecZYodLW725LGB3yPRbGfFNA7u5rO\r\nwoY5okJLRXs27jmsQlRZivc/GizSNN6/TceEhlHKnBt8WRuLq9aQW0Rbvoho\r\nKFmqHZAVaKkM1Y6B7e64vBu/oPRbCTDS8BsgJASomnF/sMErJuNMl9Td2hEh\r\nlcXMlXjzIeS6tVSrCWMVg9jmb6U450Liz6HvybvCt69q9krcMMNgcmYIPMJs\r\nZxBSQlYC/vks1SMg0xttYUr2Wg1DkN/fbTpwoFpJiZ+d/TpIqRX9JdsVgcnR\r\nBhhx5ukvnPmRw96yvg8t04OXbHjFV3muEH4LCCxFK1yL3cvnOWxj2pQbQuUG\r\n7S+nW+AbcPL3fD5/RIhGj1SAUDJn4ZL9l4M=\r\n=37zy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.65_1650046301897_0.8803511978288856"},"_hasShrinkwrap":false},"2.0.0-rc.46":{"name":"@leanup/cli","version":"2.0.0-rc.46","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.1.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.23","@types/prettier":"2.6.0","typescript":"4.6.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.46","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-jACz1pdFscSdEwLFAJvbYGVck0/IhL+WMEaWEZz/bOywsXjNiXkR1a7sDiClfwI1wGuC4FQyEwy8R5GJe5d/gg==","shasum":"89d1117928987d276843233213bedc54694f1b20","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.46.tgz","fileCount":62,"unpackedSize":139795,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCS7DQWtMm21QckBBuzmHcEdBR8+z4M23IRu6pVFjt+dgIhAKWqBFRlG2D58CVmJ2hQTK9/aNPIznh9iCNqPsarEqfh"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWbV6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmok5xAAh95SfU5jfy0Biq3ycfaur1Nhe6ZElcV7al9PQz5p+J1GSTRY\r\nZJs8ghpH45SIt6lGC5Yxe1F2rE78FBFVkEOs68H6GYNvuYO7zb+aCAgwM1tS\r\nVeEUgmeOu6ERO1AbQRcnR5jWObU08o9MiHwzGlctxdFDU2NX6VhrgvZnMXst\r\ncgDu9yzyDCzda83iBsODkMkfMFn6X9MkycGzM164Kz7zxua6zTcmbBJo/wHW\r\nTayFB2zzpnM/BqdM0IXaspAjmDBeGZwFWisnylqhpiz9tj3zM1mRJzNkWtgr\r\n27EAMYKIoyJdBpzQ0YZxQWUHKn3xb6YNfFENMYeRKHAMD8pev9JC7bv5rFIK\r\nvZBH8q6tpACBBsYbUtNsVJvXDVhBqa7aHhaVF8/+k/vYfEmgFRakToLNBsJU\r\n+nq3CgGXpkwtLKrtXWxydERoeMYDDmAqDiHDqHfMYqnJRa5yH4Z2mpfbH/8l\r\n/1UYSDlWcYt0E++6jE36Lc/iA1rYakbTHltEtJhSv6kSG0jYVimbGWEuzxbw\r\noXMVL0Jx3w6n78GyIyI0UCMWO2wfXw6ac29h+gHYTJ5EwYkqhFn1zYZFN6zQ\r\nkqedsGGfMOVflGysEcbbf5SpMtlq7TyQpb2/UKd/oUooOhf0e/nHCQHbzRSA\r\nqCisZN3Z7dkSe4joIJjq4/xhQR4CksHf6k8=\r\n=EduO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.46_1650046330155_0.9749460579190006"},"_hasShrinkwrap":false},"1.3.11":{"name":"@leanup/cli","version":"1.3.11","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.1.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.23","@types/prettier":"2.6.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.11","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-F8XDbUGjLB5dTiJCyFmeqOvB7yaff6ax4PSV7oxZi6oRjJXpXtLo01hIFsTcE+NlTXcQjiKGh5XWbRHu7S5efg==","shasum":"6681db6d1c57d69f4d6e31095f81a478366de11b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.11.tgz","fileCount":63,"unpackedSize":140045,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1rnFyGSf8z75jUARVTWiLzXOlT4t/ZRitJi0yvlTcQwIhAJYgfLdVm7EqG1bADQJfNJE4YQCnVM/T3RaPA+1mlfXT"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWbWIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoUMw/+NcwyS7Zb4xzxndnGOmJeESz1/SSfu5yBmYKn6fYI9NbXM1J7\r\n2r2rLZVqKMB8Jgv2/XXMcXd0IWet6dl9g9SA/MbHcG8BXBaabZKO+1yrDe9d\r\nxzfJRsmYZRh6Yws39XHohQ3ahtmRYW2ibfqSWdjCYrybDKt92pqn62mx3WDW\r\nv2TgZEyaDl2865Lydagnx7/jku/Z2Vl7D/8CxBnZnluNKQEEXYVCHNpt812/\r\ndNyAq3K3Kqho6jsOg6MnH/9GXqV9q68tLkIrhncnyWooxocAGvy9z+1BgEbA\r\niuRM1WvxeISUAbgb5ahq4VBPM/+rPvImmM+XGr+VGuvGtNpgBXswZHrSBrit\r\nfDvx+4PwPrCXZxJoRDIY1JSHxq1I8sGT/COTZVjsUsXzK/0GB8KDIrjCSqlO\r\n2XrvsiPgPjlhx1Ppp+98DLALQstNty5YEbZIlCsfuJGJQcifkM//M4tg1iMz\r\ngLwZIyUIq67vMPUOT5AEGx7y/z70RhkMHnbOO+hz9My2Lo60acM0A9Pzt+em\r\nBcUG/CzuGxpB5fq4vRXjHgi1ZPl+HI2nl4uBe56zXy6uTJANkGSOo+gDM416\r\nEV9aVsGAVxxDqWUCAos3ebw1JegYAIkfZziWeWYnOSEHRed6eGW0blhw5hVl\r\nq8XXrBqR+jS9bSqyquKDvS2PMMQc4CZceEw=\r\n=nw4Y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.11_1650046343918_0.5407319257999241"},"_hasShrinkwrap":false},"1.2.34":{"name":"@leanup/cli","version":"1.2.34","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.26","@types/prettier":"2.6.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.34","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-kUKyI/86zBOpKtxsOU0OL49Pm8jsJMg9fG7YDa9MmxrnVzSdsIVUasKLgCf4oVmsLId6y0mkYh3RZOeVY6k0lg==","shasum":"bcc1108956086fec7bc8e3c182526740414e7541","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.34.tgz","fileCount":63,"unpackedSize":139811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICPynoRkPngeNFqhdg+WKVYhOuxRnhDz2D1tuHWAruEYAiACJfNLbq6hgumsDSq3BGLKpOeYqdf8ezgtobXiPlMCOw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWbhJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYRg/7BbhDtF/RnoLNSTzSEmXGU0LSgbZftc524nBc/JZULQO0UioK\r\nisimMaTgUhdrDX2fpamKh6XVJfoKvEEJWmHreBYi7qjtZq6qbzoyk1/O3JtA\r\nicnHGvzSi6z1rqmfilnEjY0t50bNY9zqVTvQEdf2N+7A14+VfH45b5yo8xme\r\nU1RXUqVxsKy+dr7VYWR3J+ybTrn9YDTxe49LVz4ONg1GMJQYLhB/Yg0mftob\r\nLTOSu2kWHRaaHMEte8XQib5Xe+9CzZI0Ts/sO/u8kEbpchmzpoTspMkqUpP/\r\nAxPPRR5D0Qd4AMo3J5QBQY55U9+a3nnHayHdKZgFEV7Pn1c321W0hUds7i3H\r\nQj9bzFJ2WoPdQgP9FHls4Eqz6nfPQXlVap3vBusqXVQRo/GnkB4hoQvS++c1\r\nZqkASlRuLn1xjJwqHNtkMNWIpJxHKqHw1d4MCtCs1J2ci1wEktHAnQjDAUHc\r\nPPvevEy4RKlU/pNAWupomM/Fv8d6Nw8RKSdVd1ApZeEOTMc2gRLsvU+R0E4G\r\n7zwJSwzQAwRtbyccXWz+JYEequmE4H/8amTHb7R6LNyuGo08eoqVcgeikSvi\r\n6Iljb6vtluw9AvE6zBtdlsXqxDw3sulnFjZC524XV6nAaMX7SdMyRqS8HNr4\r\nUYmp8l16m2ALMnM2ktMowCp1l4DTm7i4Cyc=\r\n=n4yY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.34_1650047049367_0.6262032617272639"},"_hasShrinkwrap":false},"1.0.172":{"name":"@leanup/cli","version":"1.0.172","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.9","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.9","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.172","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.171","@leanup/cli-core-test":"1.0.172","autoprefixer":"10.4.4","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.12","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.50.1","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.3.1","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.172","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-PxCn/7dJmuoz2dQKWlhRrRCC+nafizSXxHCnaMbjajtnLPsn/rpNjyhBAXFdytOK1cmvc1M0u6tlcZ5kiMfjWw==","shasum":"f15457a9c705092fb5062d27ffe3ffee875c7a84","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.172.tgz","fileCount":64,"unpackedSize":152162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDskXRxfRYTSjiPup6jQuxm1Digr5vtnVkBgldKiuVDLwIhAJ1PMfZhB7wqmLbi4ZioRj0dak2jTwJMdhDd1AXDizcM"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiY5FjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoGDQ//Sr1RdDdxLiylFLytsqgRgpFeh2oJC2CuqZVkbppf0sVCTXEi\r\nCEbNQ9DCVjJKkXISes0Ps/Aq5NeWon3VMebjg1/dwcQBSzqmOAA/fWiIZoqX\r\nIR64gGpLqOiaOvOrNuL0x5x8hodqU91od3nykSDIabEGdett+QpPaQ9cXa/3\r\nVOH6aD8NJaD/cNRsV3NVPs2AEZ0w/r8WAnCxqSz4DuIt0A/MVVZ0iplzoVVP\r\n3A1r4NTBudXUV6xJhHntcybOmOt8oyh+Jfu8fwJmRmnR7wQlZ4gwRcbGfQx7\r\nTKuH+foF8qqbBvviXUY0f0BvwFsKtFXwm9pLQ9cCoqUIzffB0wGmZAmbFLGh\r\nGMDeOEtxURo/UU337CZAERR7uihwVTKcvN/B4ulDWsnC7SXvuSiiHCeCveVy\r\ngEm8ytHNcApBVPB/xA+63dbG0CHyvRS7t+PYIPzaOeYaIBYIkj54jHKSUO9A\r\nThIqrVAlo5PClDz9enG1n40+YXsIUM2/FIcl5vvUK0UmEkJePvxX2nr7WG60\r\nFwkYQ6BgD0wgRiMAQz1vu04oag2R2yy/kBfz5eVtyUfGCqKwUAWuD7SP3l8D\r\nzbId8rbidz5U5XaDKvMgkDUfkca4SDlf9ksitehaUSXs4KgU97YFy6SZy4Po\r\n0cEo1NuAqxrfneolQQ3RYqGKpgI4yNNUm4M=\r\n=oqp8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.172_1650692450960_0.32679439094612084"},"_hasShrinkwrap":false},"2.0.0-rc.47":{"name":"@leanup/cli","version":"2.0.0-rc.47","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.25","@types/prettier":"2.6.0","typescript":"4.6.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.47","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-S8/reE0OVOE5pOvbYXsGZrOFUmBT+ntuTD/0Zg+a6rRBK/k+1yvtpHZGQWXI/RPpzB2MdhsAEbQRZmPD6JhXEA==","shasum":"136c47cb711c5b139ef4b19db058d6926f7d7e85","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.47.tgz","fileCount":62,"unpackedSize":139795,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqjiCzLrKEtaX7LmZDxr0gT/FwxhMriaThydXMGxz6NAiEAvGXeAc7JwXkAiXXrcfV5b5NfgGWFQtA4w+WZvbLoPLc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiY5FvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkiQ//a9vHj4fOGdCLcrftjkN/jn+ihR/yXSALLM6DW5U+WxBMH/Rn\r\n5ryLXtiC2pjiDc6Nydj+pOzCvO00ZTffpHR77zWtDsWDwIdITqulEjLhgdyu\r\n0ZddYV0RHuyLw8BOb6hKu4J1dC2NpjPVZf5SsmIThidTmyS5adQMBq+4/HiB\r\ntR423sZOZ+5DKDVxFiJ02hvi4931Y9KZ5gA/XhFHElH56HlZys5v2YjlTaTT\r\nWbH1VZ12bcShXqWxWXBZmo5R6cw+MBgZl1EfGZ+l3u3F6Iq+8ByGBOgF0BXk\r\nMvXoTLgiPkBzr/G/MwlkVoi53mtLL0jfpsQ5Y81Y24EAvGWAacsRaoYMThcy\r\n49DJXCDJy0G9se1Hj50txqLfirnZtPMxNQog2nDiEpaK/QYY0NoQkCpcRB56\r\nYdPmlbpvs8GtqXTGc+Geovp43eQuskC/WOyHxk00OAqkaqJQrKTJJwjp3DhL\r\nifmCzZEPnlu99nqvG/tnBescAOxKggHKR2/AjVB5sLC3GAG5hy/lc9mmg0LK\r\n93eLEaig6k2PFSA4nQf2IZOQxElYItEyQ7EEcVhJlAPurS62NcaGjn2vhznF\r\nSzx2MuLsVLdXOM1Im8LGYIxW1VPcPOLZ7qJP7B25BT/IToQ42cEYnE8x5DdV\r\nGF0hiJrRuWZPfPqp/GKgnoUE+Z/KHR273z8=\r\n=wX5a\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.47_1650692463448_0.427348956556173"},"_hasShrinkwrap":false},"1.1.66":{"name":"@leanup/cli","version":"1.1.66","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.27","@types/prettier":"2.6.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.66","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-j1c2grTZzAiTDbJycdoG3uPhQZrjel5m0KfU3PvC0JGZejhLhIZs5pL+SIGNeiwlj/Hy5ynkdCH5v/TeMvvdPw==","shasum":"7e7b018b12c04108405a1e36e9bfb793a2ed4a99","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.66.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6pMzyHEhNwxbAx1bk9GhDsUpr5ELZFrcZOpbKKiq7lwIgVZikO8qLogKUE+DC+qy2R7ShYbIcK8rw96ZUbFBg1CE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiY5F5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqbnw/+MFmFA7cv9HtUH6jC5eEVlYSf9anbMWfyemCuzEgz7s9ahy1G\r\n2Epm700RyeL5nxzJchltk2RDPn2coI48QZcb+ky3/y1q+BlC80KBdOj2UQh+\r\n43T9uc2gdnUAlxbREgAsXufaOIZXKv3vkURhdZSxiJAIIQRKgVF5cW7W5dnt\r\nW0wOep+vhW+Pdd5+yzujuHc3J6cHX7TZvvvGNgn42QLG828C2XA6rWy9J0Lq\r\nEAlLVX7g8QbkBHrAlRWAnASYOhHF9Xl0CIH/iGZdSwt835y+FRo+FlWjkofU\r\ntxcEeXLoRFguKt6kERU9OAf16iLVy7FOPOuEuAe0Zg2h2fPJrW2rBlLwrvOL\r\nH+HYQ2RfPJhWXB17zOqGqDt1oHSZe87dUbyzIXEt3Kjdz+pkR9rheP4sjN10\r\npt2OwszJEFqF72p8uRQzNiMIve1KUoa4DkvAnd/XNHv74w2dJT9g/59mplHz\r\n+TR9ePt5HjhhTfPkpBIZih5+hFiCtvPtGMtu0JpbFvxGAHczKx+vHQVzXANN\r\nxDAphfeW3w8jK6J91lOwWYwyY5GkWetPhwa8xpG5xujEBY5SdrvzkfGb2LFZ\r\nTcyV31JHPIuSf/kHs1nrWfol9dLLhot4UbJumUzyp4FDRQvkbVzMbSltQdTx\r\nk8FZ8ZSL4+dzF8wTj6Op1rDanOcbZ70PLs0=\r\n=OzjO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.66_1650692473637_0.7094986043672276"},"_hasShrinkwrap":false},"1.3.12":{"name":"@leanup/cli","version":"1.3.12","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.25","@types/prettier":"2.6.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.12","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-EIWY5z6pljfw3E2IhUD0hSPcAnyVlMsxpS4sdypFTK8kioctPvyNNFnU1gVQCDALS7KDuaIdclF91jTy4cJd0A==","shasum":"69786a43cbfe19697ba3c86fdf3bcd784aabf8a0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.12.tgz","fileCount":63,"unpackedSize":140045,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjY7IoVqokGa8cnhT88CdGkUtzkOb5aNbgfvwBU/WyhQIhAMmFYyEqqaWD+xUm5TdqfzvwJ57yBCfkLJVGUuLbAS+2"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiY5GgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqmpQ/8CY9w9f0Jc/3tiPOk95YlWk/KkxZOieAQtneii/qsvhx4EEfI\r\n0m83ZaKcaK021+D5MzFzgLTjtijCDv0zTSf+2xpvfXqIhPMnNXNoVHWivTXf\r\naPJ0scECHe0fPoC1WDDrS7Oxna1s4g13LlOvIr/yGJsCOoyST1YsBBKSrGpo\r\nRlyitF87WJnpM0Tibmq3wxpeYQZUGqrxXHp6zq3FzeY+0fIOeEatxcqCGRW6\r\nlErOATri2inON7O1YgCHNG6mkdDnKC/iBnarPmIk9ch+/gKCRviERhwXRJK5\r\nQBCQ4juxFUW+cj9tQqjsT73fNIvXvHFZCgLhIWtpNXRES/prT1qhMH6AbvqB\r\nh+wcoeXQ5br26+Neo8drynUFfSvkr9IYdGC/wZ4HuwnYS2s1OHf+Tz5cDHcC\r\naAisyRRGUsWsreyHHu+Hc6hn/5L7ismCN8zhmlsxJ2ITtYccTJZtJDhjIZQc\r\nD30n8S7xmKkMwv31RKsF+qUWDPUv8xS8562VCvVbrSeZTfFXiXvVwOUlAXId\r\nRtFxsXTa+uGnDjO06Mjx0UEWV7WUuEyGNCBrqsxIW+F2AgrK1+i7n8U3DGDx\r\nILULdWRcfaYjoVvBeA47VnGb9t5igz89nBH/mXICyLcbtN6pOdCAm6vfw8by\r\nnvpEzPJ3VKFJ4Ul+PqqS4g+Jvt67R7gMV4c=\r\n=ukKX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.12_1650692512281_0.8265535297774058"},"_hasShrinkwrap":false},"1.2.35":{"name":"@leanup/cli","version":"1.2.35","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.27","@types/prettier":"2.6.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.35","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-kxjPpPhXEQWA+p70eoGKQDWVtcS00xaXWo5YO1b9D/ZV7jk21RTi7LG5Wr7clHnHt0RRxeMB3Y1tv4P93vGseA==","shasum":"509ddd3368e81103662c5afcddb5087db2cc7823","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.35.tgz","fileCount":63,"unpackedSize":139811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHWmdyEwGeSvrKsj69IAYMDRlgaWZqvHchs8hF0aGXFhAiAZSO/AnLkRxD2wlE3+Uzjm3uAuGTgaSSJnfRcPT+gTeQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZWHrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrCsw//YFeVQLQ8rIOxZChfZY9C9Ren0v9YPui7MbILy83Glt8ySAl7\r\n5wVu/wDlt9nPhnrizAfdkwQIWF8e/hr+jZcqHrdSincuqD0t+VkaxPwQTbRo\r\n7iJrIavCuv9raYwgiTAEE1rXFBuedIA1PLUWRbnbsd5vwTwLobo2i09/7xJK\r\nKQ68q+zyoqYAxH90HFdEcdBLBk3ho0sLU8orVL80a5HQyXupAV/2uAx9+ztI\r\nbMxvZL4ckQJQaOCYmM5GmAAJoDt8R5DgFCalPnSFod0crVAnR98/OBjE/T5H\r\nZI7ruYi5jyVKPREz4/fi4N/VRQAstnMILdlOIWQoV5fSw3hczha+KIkmSjsP\r\n+wVblrTotEm3VoMu354hRIVU7uHlaXlaALF52JYWjUbK8SLn3gS2KU/wToYe\r\nvB6hfhznGNLZuVo6dhpjc0VHu2vn4Gf9eRHC2KM+4pQ3pouvlv2KKe0ppywz\r\nRuZ6bxi1KfXLYM4ZZv7XZjub8Dx+bhk2Qvl6adJIzi6xxjdSppU+7IhhhwFm\r\nsJgMF9d1FwzEZAEmFrKKhw7xpOlVpwAfA7oYUo6A2ZyZ+s9fbcq467ta0aqP\r\nmZIPNMABTKTOlGS/A2DqMmeB/RVtP339VWHipbxQJnqnTkIp4KIOyPbyCkOH\r\nfumk+1Br2zTvRanGvjJfd/YlurXWXbpzWLY=\r\n=I4sw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.35_1650811370795_0.43799459248260875"},"_hasShrinkwrap":false},"1.0.173":{"name":"@leanup/cli","version":"1.0.173","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.9","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.9","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.16.11","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.173","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.173","@leanup/cli-core-test":"1.0.173","autoprefixer":"10.4.5","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.12","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.51.0","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.173","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-WT7EF3KJ6NjVUiT/8JFht+3bKFCQvj9kYVuX6F960R/eCCLVR/kDTxPxi9+prfgEUpJsG5ABw3mXJ88cfXDZbg==","shasum":"83d6a789340d3268b65a461d1367059b5cfe64dc","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.173.tgz","fileCount":64,"unpackedSize":152162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHOosYoJ4Gq0ySYiJNUq7g4mCJ1++pxOgZlqNnd4WyrNAiBkLqFrazb37fxQOvLG+kIUQRkQQr0ZwBislEOpzjuM2A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaeiOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrJ1w//bR5l8I8FO2YVXotf7wDMupmi3kNBdg8fAJqvwVPtX9eKTpyk\r\nGF+F8Xp/5Qd0eFZX7TZvPjwppth6xNaPFcGkliNQ5DqNR05RQJJgStJlEOPE\r\nUF88zSwdH0YQUWxUxiv6ZFBoUm6UHn9faQ7E+Y//1Tg/lLHARYFwmRkJcUpv\r\np18uCObE77GbEAXo9kfzPCXNylfRDMl5luazlwMR2w3T8kXWKi9gAqfxZJ0h\r\nKohdvE/sA+ei1ispKCF1dA4iT3xlKiDQgSncDMDOxrcF84aMeAdOQmcWJ5gR\r\nsJydIhBpeKiLayd4gWhsW8GVH7OzmTyq+nHeCaa/9oECd3f7MHSvHbk9nyQS\r\n8KmkInzBkt0D7JU24296gtj5iAVNquzRNq+gw1mWQ2yMDxmfFEV9J5eUUjB0\r\nsW2KoRdol9LIauELqEi0HETv5F3SCUCdXAL9+WcJ6sNrVYIHduipVIrxkBKU\r\nYDodpW5nTCh9c4uLxHc+r+n21WEpKpG45VQMsrahsqYS/XwvIPMwxz1b7s3M\r\n/RPadaz2anA9EucvAGZAol9R7n+rxiiyuTnR0XvZqCEAW7ND0uXgfr4yOLyK\r\ninTDdBJzMDWaBFEhpNN4CD5RYgS5jv3IOyaV3yq/KUzcTvCEUc0PlU6fN4eD\r\npr4WsCFXQC5JWNRA3sPRrzxx5tOBuKScF4w=\r\n=gyWG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.173_1651107981845_0.4017155405937536"},"_hasShrinkwrap":false},"1.1.67":{"name":"@leanup/cli","version":"1.1.67","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.31","@types/prettier":"2.6.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.67","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-PGiEuf+4B/3LIekZMrXyHSHU4amr8f+R9G7LhwF6txSbceCEg2rbIPqh1n1ORJx2ksOHLry/lvXtZ0bzhfCgjg==","shasum":"cf55a89da4ae2b50d7258b6e59f493820a8daae3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.67.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDloBtIZDQ3MkAhHfRTRWjiSwMYpvzE2RxmiFUKcvRBpwIhAOEWSXjIoTwAQw+hscLIDmEWSG1U/1cKEl06+2jjuN/q"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaeicACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpZqhAAj22hSwGmyYQal9yFU4kKIAMxKA3Nm1Y/Tw7enu3wyEKuKDVe\r\nyvDwRgcQVp7XxECXvtod+UqPzkekV8eKij25Dv4sdue7fNBahXxHbQ6YNcaC\r\nj5aHvukOgRGPyivKRUPd9CWISR9404UKfcrW/S/H6fIUJrZD3VOcLgNi20u/\r\ngU61rQIuqiDJipms/NvR49opYT+e8cT2r+F7q5Yly9RwWifGdFdDQj3a1mH1\r\n12hG78eOYNyy6DT2eI1lr36Qk1UzAQew8c11r3UgTE/kicJPXKju5H58ymI5\r\ntA2cC+kLb0tXasQygI2caN6GP3EnYibRK6/AGeYEhGjbgIuQdT2f8XEQ0m0g\r\nViBhhbuo7cJmCV7w4O7jAZkQlXBOU2XNipIg3XFCn7qkZTL7kAOucnwIGLip\r\nDH7qhEOxvkkWOrGGfs513Xzlf1Edt2D50+V666P+PzDsrK2Ok+7tbaMNa+XT\r\nf9UasAEDSGMXgsoY1nkz1y/g28jKXMhWsURJlf8GzI13CfzM2bTsrWwhxtLc\r\n15mPfus+hKJtbL+bdlNj60e+xdETzMh1VJqVbppXuINBCqFwNFsh6OtPo28n\r\n0SVnjcChh2Z6vrlMpZsLrnXuv/Z06NbLDQ2Ee5ccfsku3O5hpGwmqh6g9IKO\r\nbg7SYCLk4tk8jgQsERcBuoyQ7pPjIEF6Rk4=\r\n=DHcB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.67_1651107996084_0.020596448264281975"},"_hasShrinkwrap":false},"2.0.0-rc.48":{"name":"@leanup/cli","version":"2.0.0-rc.48","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.29","@types/prettier":"2.6.0","typescript":"4.6.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.48","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-00Id4fLRxYR3wmZviB5FHJ8DzUYqjU4InONJFs4RvaI2Ve5lVpPN9THr41piv4V4sMyOyaixm04lyxaT7wY+Vg==","shasum":"cc84b2f81a1d7dc88c4f091baca0e44f41b8347e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.48.tgz","fileCount":62,"unpackedSize":139795,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDfRpaqlpJ1CHQ5q8EdgfNIeiakJfTwuOToZ1EVN6xAAiEA8CNycgQeILZouDwJwQefgBwXZfY/oXgi3CVII9SHF+w="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaei9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqr+g//TNrVUJ/ZITRT4zPaVR8yVmQsy1/e83NLprJDKw14Kzh9ZWsV\r\n0UAmNTrRNUdQ7NVFDQO+w+KifxKL9E7DIPm5JOt2ZATPGnDuH/tdQxQHOt1u\r\nzLe7i6FN6l5YrLRaTvHNn+yQxDXwNh6iWGHgiXfiQxRmhgbUQQT80S374G6a\r\n/DaQdGQLOhlM7rEX1i16gQAM592mdeOqtcVt6j5Tw15x45OJeF9iOqpJ/3Qr\r\ngza9EAERQWy/n0Z/MbB07dP1hG87+GHZwx34DariQD15ZuWpv0in2MSrjpkU\r\nKZbhm9M0BClXwk+AFDgONqxxf+3HaFUX2uvapwYyvrJFtbr/DLVUkPuCNcV3\r\no9cM/gAMvCWsnXF422twfC/2WlA4N2MGbi2AIpHsh+RJRh75wDjeb/azC0wf\r\nDDHjZIS9+kNDxF5SWLTE8NfBAZUIF3fmPd0WjKy/7A5DLCd1V1rKMUOlhE6B\r\nTKtiB953gKbInF2X/0PiLowUD/vH7Iwg9mCkWzMAPCg55+lHMDdgUvy6vpqm\r\nmrfqDqWhxT/j0ECNGa/fCSPzcglYFi5crCJXzku4M6b57YpAzHVZPpPacCJ3\r\nJbJqzxN9u871y/pxaMpAVkI4mcu3enf3F6eql6Wl8PQrf1j9n/1rYrD3bkCc\r\ngWiVYxxMGGKhhxa+WsxTis8daqwEiUavPwM=\r\n=irsz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.48_1651108029529_0.4061473536315925"},"_hasShrinkwrap":false},"1.3.13":{"name":"@leanup/cli","version":"1.3.13","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.29","@types/prettier":"2.6.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.13","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-gnhwAD0pHCrBmoZAlYg791wyyo9WiW/Wn2mecziBmHhIbxJgrqFVIhc4WJ5cDsR+I62RR7l+30O/l7uLQVaf5Q==","shasum":"00a780d52b2d563c6d00daf3fb80fd42456dfc3e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.13.tgz","fileCount":63,"unpackedSize":140048,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFE82nu+WGSreMMkBPCDxbuUiCMY60DB72hL6qUiwbQoAiEA4X4ddYy0R41PqwUuinGOq0N/oy5uGki2himLtZ/+h9k="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaejdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmopFQ//RHxmwWqX4+66FQDeea+wiolje2JD/Y6j+KV2ikvO0Ua3k1j0\r\nmJwYHZiIP9JluCReW5J9BFYkPUTNCxLd0ZLLx7N0v7QhPCF3aqDZOMGHCQ8H\r\nqb+E6hc6lniG4rJp/eV0Q1BhqOBJImwkbiX2PYz9timcBAUk1UQrdRYh4fMO\r\nXYWwjJa0XR7myIQI7rNpqubVz5kw/Kvng5Y4ACY4bU4IppS7dNO5Jg12UstM\r\nW3xNyOwfak4Qd7ejN/MMa5Ovjjm4Ghcsb2byrPgr3Q8x+sA2RvFkh4WytoVd\r\n60rxGkegXhvj5QiQQApAH/cc9YndkVYecYlWFleTO9JP74aKXdQZd2fDfOaH\r\n1ih0Y768vHAwtr85Nc/H+hUtaEHDZZ5N84ZEs2h/EbcgoPcTnbiB/QTa1T4n\r\nqxsM710cEY8k49jHEUIotbHQ/WMl2Lsz7fsA7/dEBPvEa+w9YQmw4sZnDc+0\r\nyM9oYvzxWgtoWBHLhnQJU01I68KmDE7H18Mkryjtu0/5k5J/RrBh1QqTiw2e\r\nn00pq66Sp5qKdfKYAcojmxUsHUNCqvjVLn1NUxJDwVxOB8tlMhEL6Zrx9OtF\r\n5mCRvmweN3rN+LQ239kheNTrOjbvkPCln44yEoE/nsZWjLTLUWGPSIbX/AH4\r\nW1A5HHCVcyHZQneWRkuxz6OPDKEtiKXSCrc=\r\n=JlLj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.13_1651108061244_0.5413065254963583"},"_hasShrinkwrap":false},"1.2.36":{"name":"@leanup/cli","version":"1.2.36","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.31","@types/prettier":"2.6.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.36","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-f8JU5e7asXzBvPlpoWVA0gJc7b5ewsoV4brjesG+mUUZ+lhkA27X2Gbe81bKvP6KHE8RdSK4GF2YwAFLupcWTg==","shasum":"3c094c466707fdf60387240a85828c23abf5fbd0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.36.tgz","fileCount":63,"unpackedSize":139811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCCJoLEueD7kqNBAtss0Rm87Mu3ntb/SaZI1jtc59LaEwIgMIBglTENJQAd5w+118+uM78jO6eoy3iCgiSjoc/LVU8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaerIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqtHA//RD0r5BSjvfpX8zpemIoOjT1I/Lh9Fe+a6VMYXfCG8yxix5hT\r\nH+sc9jbjhCJCwKJXwOFQmZem+uL+uvV66w+8U/rcnl+zN5juIvLgJfJlGylw\r\npzHe69EAS5sSDo+rj8WnuqkmIPEJ8wCbptcE4/Pd38P8az2yxK37bJWf1SWw\r\nz51VaIRQvWtbk+ABvO5HOlaPS8XPRMTH06BxHx2w6lwUSJ4+yt0uueFHPs0i\r\nAVIo32bs2dvVQWMuz2G1lDQhrxag4MJjwoMV6PSx42q2Z7+xsPYguaq8XyLK\r\nwSO4N5YvFwEPt1azk5SyXbBofoVQGZSLGSZyV8vaTiHa7lq2J6aqfz32QMqL\r\ntRL+JFqj4gFdTn/3SAjxzoYDcr2VwPo+u6rcmxxcYheIbcW4Fo6KzuqTlRGg\r\nUyXN4wNGEi4cncHpyFg/9/umQfqi3z0bcjMhrz9L1drMAu8ZfKSXOid+1q5m\r\n7ubElkBK8YLtOtmwCqlpW20DCrFv+Pgt3lTt542Skq1i6mJqD7T+J64Z1/sX\r\nx+PZhtCMO/tIkrgKNSG+bwtaJ1COiM4PtjcGk4ZRzJl6/G1DlHalGMzlTV29\r\nx5V9QjYMCDk6ar5M6Oh3UoLtHV1bPhEnyStaiZ0ZGUnc1Uee3aAZ4P6p8a2e\r\nNodA1ocHaCpojAoNYO3EsvgQ6x0PxMJnZkE=\r\n=6gYg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.36_1651108552550_0.6703768608368872"},"_hasShrinkwrap":false},"1.0.174":{"name":"@leanup/cli","version":"1.0.174","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.10","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.9","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.17.10","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.174","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.173","@leanup/cli-core-test":"1.0.174","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.13","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.51.0","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.174","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-t5pulgh82iejCMfiRJKNBFiBwbWsp/lHD+h9iZprCtc3b072w6QSUy2sfPIa4CjgaIcsW9Nj5XCebwV3JTUM/A==","shasum":"f5bcb466f0e7d007ef038cb2ef89b752fb00505c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.174.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFGqcYFmqOqz8k62BP4fbRq3w0A6fa9i87GraBoqyhTQIhAOGLIyALfqAkKio98BCFG5YagGRR/AZZ6PKHLNcEDOvB"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicz/xACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrLNg/+OoRFuwCmwiI1UzxRoEsD7ylnAg4Q/SqT2Riv5zhhBMhdAucW\r\nfTZRxf6Um5eCOXlziZ2LwSGnrjOhiYDeCFFni1faFjZiXXpVIku/RA0Sdf0U\r\nePtPS3NZyOluvtglYhD/hh2yObQ6cemrGPk0xwGwlcCm1UtQl3THK7QwRIij\r\n8Xy6GHfqOrR1dvIYdLycv9Lnfvtek1bTVKOvNoHc95Ef8zxLp9+lbjKaTGa4\r\nwVYNjnJUrZFDW83OnKT0GUpWCfH1Yj9+4HU1ECquevruNDhQcGdBVJekQVSs\r\nzWzDfriKHPxWde3wg4p4AkDzDfNboJIxt80TgkMjHa0SA522a57X1MDE5TLB\r\nKvru8K1RLH9wfi2sHuAwcai9hLudClO04qpPcq+1FJP114t8gVO9TeW4gyXy\r\nvTSzc2NpOeLFscuQP0d4Ow9ydukuEeQeTs7ik4KbQtYbFQU80ZHC3Dt5pFEM\r\nnYDpeRFIxP5ZIhnxBPeGQ0plSY631dMsUXg9/sSy6SFBFIJz6daO9OZ9nfs1\r\n4t6EqY0wNbpv3eI3j0eYoZx4Nb7ZDRkLpbSe0q27jH7eEg1E6KxGddh19GPU\r\naPxULZ/qDpMIZZWIiX7EKoygvYzgJN4+k9sSFxel1Dtyty0pPVfu3I4IwOhH\r\n7fvMLsMYje1zE1kRvor6ReTPmvQavFgBrDQ=\r\n=3/y+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.174_1651720177743_0.9794269122274846"},"_hasShrinkwrap":false},"2.0.0-rc.49":{"name":"@leanup/cli","version":"2.0.0-rc.49","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.31","@types/prettier":"2.6.0","typescript":"4.6.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.49","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-UsspUylEHrmhXvbqDMI/wl2/mwR2F2CRapM3jRYdJesLoe8HU51QFeJtmxp/StySohF2qZfuj3lK5ccn5fs3ng==","shasum":"cf54be07401f63fd68cd15835c6b674738e32267","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.49.tgz","fileCount":62,"unpackedSize":139796,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFNJlhblEFyTqWaQa9eRfBjW3zOkI6XSmW2JaarM932FAiEAn7R3vO8K88Br+A4xHxDp5RUEPU584r49yH1t9IDsJ2Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic0AhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoH1g/9EBoBhZ8bjLcXuP0VkJvs/KF68qA+qvza0uH7CotTZD24dNI7\r\nlQdraFQtuEN85IpHu6z87jshZXwbKsyF2oBn8PkkDDIkEjuYCHtQFec7R3hJ\r\n4vMF99RncbFoDq6WopsR3zXrKhKmzSQZBEjTzcJUF7flsU/vsceKSGjNrZoK\r\npH0hHZyWARaIPYXGSlz9y+UD1QwvwDseoew45cZrspgjnX6/xyh5U9eNpEja\r\nneeSUWZ2TcQ8HUMIDZdSVhesD5ww03rbm0GYy6CijjV2bHj+FjmgY5nvyk9l\r\n2D3WJ2jhL02N5AO5UAdK4bUc3gzsn+bWIh43eaZTbwm+2MERU1w2vhw3SFqZ\r\nxXwdpG9AyRpENb/xPfcQkLjbJzNy6ebff5n3mfIAcAYcFL4SGupi985/lXL9\r\ndM/ETIZnieU809ADHEFVGu81Y7CTEZV7X4pVLaMmIAPupH0Q0HdAU+nhJ0k4\r\n/UlDcaiceNELjqaW6slroYlDBujhqhZ5QjxqW2dC7YoYY9vKc2G3cZj/s98O\r\nkVb8lw5eZQJ+/O3FBVnecV3R4JrA1vb3tUA0wxF3tISA97e58EA+78iHfchz\r\nGJDtXYa6MSQ7LHuPKsa5EGHWLQ0++jw23n+ygeA+C7A73v85a/l3d/MPNaHN\r\nHqK0qtSByGWUfQFGX8aMCIv6wVIgd9OD9AE=\r\n=Q0fB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.49_1651720225496_0.6009311910100086"},"_hasShrinkwrap":false},"1.3.14":{"name":"@leanup/cli","version":"1.3.14","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.31","@types/prettier":"2.6.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.14","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-PNRSegSJt1Z7eYH38qwpcJWHbnqTNmf07Of0Hw5UPTLrkeuRLYLciW7qmtagpkJYpi2A1VoUI1k+4y5wlF3W4g==","shasum":"b5f6ee617e3f7214c47dbbc8c3dc2cf7a8aeca28","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.14.tgz","fileCount":63,"unpackedSize":140049,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6FLeJ7kJ5sUBggvGPx5q5yx3Dxd8eGFf8xzi91ZGIfAiEA3XzNrSLOJs5EgX5B+p0xEUz9Bx4eblN6yPVGPEFfzaU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic0BBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrO0w//Q7LmdKr+mOrTNPlSZ3iSc0Meoeoj5paLLU20C1mW7/1SKNhw\r\nP8fDHToGUJFGJMg/mV7cvopnbhlieJgzqNacwvBqpIqsNDAU+AoWl6r7oUgP\r\nbEHsgRdhjBKUmaBqziPk/qUqDuIR3/5T3XM0UOM49fzWpWdScuFdFWtZBO9i\r\n9dJ9CRHnMW8Nma34ZjM9rkkYPVE2/jZmXvLGGFYMlz0Z/HJo1MFSAJSPgMFK\r\npkZwTapjgv86qwz6CtUWzHV9wuT+kobuALS3X/Dp/LRZGYSbmLa8siUC4iZJ\r\nTP1LzUgFLkYcjSMt5Bjb6Dk31h3DtQXVmFWVrk3zWUidWBtO1iBsin8dOvQI\r\nUb3hq+J54BtnDVc4CYmjv4Jbqi+m6COR/RGqYHeutSlbX3a9oaEy0wb280Jn\r\nSIobprx9bVdwCf1E8RqEUbC1FF43N7p/w2AXeeuoLSE7z+UvUch8pDM46PGr\r\nhH+vFi+8/rpZ0xuaLfY4j9oUQKkwxtbuPCoHGIKrcZj6t0ukB5g8Owt4M8yp\r\nEy3yly13UiIrgrp2U8dziwd5/zFOCM4/I2HN7tITSS7bloHY9zaK50o8b3C3\r\n0CQiXp0rRQslZfjsNzFHMDqWe7g/uPPDz0PUk4biZEnl85fnHZ23NQo2NGJM\r\nvwJoNusZi0c/EplNKSD09iPuRB/GM93eHPM=\r\n=nM1W\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.14_1651720257352_0.8912411579014048"},"_hasShrinkwrap":false},"1.2.37":{"name":"@leanup/cli","version":"1.2.37","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.33","@types/prettier":"2.6.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.37","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-DXli0r4K0wES3znhdE8c6DfS+bLswY3FbjpkQmlJN0V6Wyq/CbU1OlpXRwshQjlMtgx4yijWmXAAP/s5ayk3Wg==","shasum":"b9a550de874e1101ec3a0477829a0d790ebbdceb","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.37.tgz","fileCount":63,"unpackedSize":139812,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAwlLA/29yJIkwdno0y5IgKa6cmkx67UEMJA9IBxPXzHAiEA1a86l3ageur/6jR5rMbHjOxX/Ou4tgJbVgbv2vCX3rI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic0CuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo/CRAAkUAWO0WC+rCiF8pjNda8PwQrzUOMFYy7lWLcSR/1n8vxyQW4\r\nPjMoYweSoosAy/6D8COQIUNCwMibjaDhb3djEQs5H/G4/AqpZwQKJMbcUGHh\r\nDTN6R9QYUXDyyLVMac/nfRCeZImjbidr7bQRHot3Y2xSUJ+ovsaCGzuS+wSe\r\nkg8ellK7yRSTBw/+v41Gkh9U/+jnu/H0CyC6GTn0101i8C1UDI7NiVDpox9B\r\nPvV5EEOFQE2r4ZeQbHsQqm7P3fqjuTGMPVOBRLV8aDZBOk2ssT/jibwd4Ozq\r\n+zqmLdLB8rnBm1wn6B8wJyGcQXNyj10I+9tP1/Nf6r0MgHZTsL9BBfpMpMjP\r\n1ARz0Ri1TviqK21OdQbG1N7rmpIaDvib/KMD/cG0cpq3GXKEBte/GqXuhxUJ\r\n76LOri3PQKwAKeEktWZeXnsurBytiKdoHZnbga70MQLbaY2uePyJL/a4dvUF\r\n8I/92Iv8F0iNGXGTr/m7kL1gpkkwupccLo5YIKrbHwhxYBOdI3FlhHWfd7d0\r\nEX/O/WWe8nBj4+EC66rTgPjcV3p/vJNh06AFU/xo3VpZdheRlS+pVocrqvex\r\nL76yK8iy+Fk9HB7VjNI+pU6SeETYM1wwuP8+aDvjLXUb47YHXVnfL8yhcnSC\r\n0dIxhJwjx57K6DOkW1oSDHaLgftlybuP4yw=\r\n=2uWT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.37_1651720366282_0.47027900600246086"},"_hasShrinkwrap":false},"1.1.68":{"name":"@leanup/cli","version":"1.1.68","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.33","@types/prettier":"2.6.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.68","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-1isZjte0sQPrcrxdHSf6C6Xp3BO2mK9NGj7ou45jmoI6Kh6ibPm6gkXnIHqknkAY0d0hCvpkAXlmEBI4m7sjdw==","shasum":"5e6070d2481b95298873d0626859ccc21c537d25","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.68.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID5Cm57djQC12FBnWk3xJvkzQ3b7/PEAKNjdRjFDgZCcAiEA3K74VQK4MCxxTr8xB2xkbG6mteG7E3nt8t30BgAbLjI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic4j7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrh2g/9FCUPgOE+zbrJFpGwZUO6TwPw3/5iONCeWE4LMWfEu4/I+nKF\r\nKTzGZIw/fjqoF7IXDWykgP6GlAnNcSSC4nwf0CXOyXXLu1D2LWG1UklEt8DM\r\n0hvRovcd+AgAwg+rqpJ5p44VVN1rH3d05UDJ9kqcEe5eQLawtbBtnFcSfWND\r\n9SYzIRDZEp/P7AXsv3uqls2XkVEO1PVWPpU0/X3u16i8hCKNywToxjLHK1IL\r\nWLo9khPwa148Lsds02qPjPpJHiQv90Z6OIM2wgnvuOhvVmRq5E68IFUU5EFv\r\nq0HrYEjnMc2broJUoESFGVoeN0Yg/kQfZFI2gqx2FyBKSxjiEnuHqH7XYK4Y\r\nmJh7PtkFhxc344aSB5H/kiyjU4NpvBZllxCYKJg6gYPto8dKY4tnvAoM7lkb\r\ncAHnPnCpjoBlUebI7F5ckjE5admrwT2umMNd6EmHWwUulh12y6j7nMc3UHrh\r\nLtWCyFDDvKU2MTpkYAqX0Mrb/2jlAY2T6yOq2HNDp63yOPGd+qYOcj1vlfg3\r\nXz+yQsHb8Q2D04rezaZafyFC57fykso6Hz3pjS3oQR5qTjmp2zr0iypbMlIy\r\n4ie59lbLoABWJcQhjDaOrdnhw3XTzLEZQYGI3CFCZXyT7jkgvJhYDzWkyPCR\r\nVXYJ7319HPl2YvP3VUIsTprd3dyBKU0ZjKo=\r\n=XUM0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.68_1651738875768_0.3740629931311765"},"_hasShrinkwrap":false},"1.0.175":{"name":"@leanup/cli","version":"1.0.175","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.10","@babel/plugin-proposal-class-properties":"7.16.7","@babel/plugin-proposal-decorators":"7.17.9","@babel/plugin-proposal-optional-chaining":"7.16.7","@babel/preset-env":"7.17.10","@babel/preset-typescript":"7.16.7","@leanup/cli-core-e2e":"1.0.175","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.175","@leanup/cli-core-test":"1.0.175","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.13","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.51.0","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.175","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-kcBgPmLRQwz2oPGUsdQd/uIKOCfY0ewob2I3Eo/t4IlpJvfEck3NQavnJQAFy6z9wZ14jkfb7Fk1nyNkc4nQ0A==","shasum":"6165d309ab731d0401c4589f8ef1b58d4a68952e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.175.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqNKcYGYhluMgWJ14IJWuLtal70Tvrv/5j2+uOgsSAZQIhAI9Lliqv2kDbfiwXgiu7uLjWNJ/DPHBMZ1lz3M104pih"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifGg3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoMfg//VF7/ZTQ4TqQAw9a263U/UqZclxfkOuvmRQaYC7K8KuB4E7Sx\r\n7LWTaFj9nPA1IX70zzXObiCt68lIoCLd3jWjgizdtH2PWUIjXkbc//PvjWhb\r\nJDdM3peeqnZxMU44fd4Ioj4RNHfpjIiixDVWSdJmxAcGtpyMJsExlUn2wIX+\r\nRVF+QLP7IG9atwCXSkuClDE1rAXv5fo1SX9awvzbJvSF0K4wyY9hUpoKVhYx\r\nkXf+atne9rRCEzVt5ATkRMtL21KwdMasDeR2vRNWEGvxPCtfkVLVxXE3lo8l\r\nnbfTGmZkgY0ZlaQAyVtf0yoQqAS7nW45ca7KLKtPxalOhLgw6aQQ/kkTlup2\r\n5Cq1hqUbrx+Rz++noFUruWsnaPZ6nDRmQ98oTxt7wqwleglSv6Ep6Lx7ETN7\r\nTH+yfDarYdqWaHO94GT4SHLoiEdQoYDdTPQSVcZv4q4rdcKIuhH+Hcidtj9A\r\n9VlTaaowFaFgsKwgifz8aAb6zZ+Be7+olpI/9gvubYZza7m47jBaon4KvjgJ\r\nR8LM8sREOjTI+G/ZVBmmq55vOpMaerTJpCIiSMslhM3gWcmL0zOsO7M8z8kl\r\nmQAh0SrxDdWTI74YnbP2honFRXh9pZ0NrODo0L0MELErf7ozUu+YFsj4c/eU\r\njbHLrMxxUtbEFlm8sVtVFcCuwZNUJp04mAM=\r\n=BT7x\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.175_1652320311562_0.6966854148938204"},"_hasShrinkwrap":false},"1.1.69":{"name":"@leanup/cli","version":"1.1.69","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.34","@types/prettier":"2.6.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.69","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-e1g7mWjcW6ta73ghMK0ivfbMaDx7DPpWxS/HdtNe6j22dtPI6DpnuHD9nbL2mhWn+jU5E/lFh4TqeiuTYxggdQ==","shasum":"3bb5dc928c1954ced93835106a9e9124e6c1de50","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.69.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAWFrAaaxzgL10uqyk2vW5by5r5KovS9IONOSHD2ifTzAiEA3zMF3UNCQ5eTDwWwzA+AmdFk0qfEyGLGRDfxX9G+tRQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifGhWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp8ag//WW381itFrip9Dgx/PuDXwOpVJa70Wo4l3JumDD7HbTRIOEgg\r\nXtP4Oaf6693VYg1aEZST1z2+Ku3AWPDwgvPnz2a6H8CvKs611p+G3zJeZC3M\r\n0ut/KYhORd+r8X/fJgD/kbY3exJk8yFst7JLJYhM7HOmFvpnCMNkIMD84z2T\r\nIRJxuTTV2no50BwSV6B8rsT//TOUQg4dgf4D/ax+zoWAR0g/66iuSjtplP38\r\ns6jRqADj+wVYqQVPw2lN7ZdvwGkIS/g1KOu7gTYkR1/B61S1WS9Vm7XtLFmG\r\nNiNpE62a+l+mX+zZm5RvgObaeKs6Ew038nhaZHc7pe5GbLK/PEhzEhzNlOgE\r\n6BGdBnzeP28ZE4fh0kblfpg67o9uZWKiBfWARB1NDAmh0DQfUd2SAKTYt9V6\r\ntcmuqXZfYeavKrg+GRYfUvSDw4MOxlXxfVvmArBFOQI6tR7vlDOEJPq+2lCq\r\nT8SxzMXOfwlr6kZ6I8OftkAeJ/zZXeoqfEcnf250UUZC5tiR0HhvPF9xohTm\r\nOY1Hjh0Y3/BuRx6BTRVV6Yro52mk4B6h3fwfS5kTktkOP6dsnXsgBSo00YeQ\r\nW049r7b3bPxo+htVngD4Z9dWXdy+C4DGVdt6BCXu+g36JRits15honkdBngK\r\nkiRwFyHZRdw+MQC2/cxZfQZRMc+oFD5G2tQ=\r\n=ZbFQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.69_1652320341870_0.3435481133853133"},"_hasShrinkwrap":false},"2.0.0-rc.50":{"name":"@leanup/cli","version":"2.0.0-rc.50","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.32","@types/prettier":"2.6.0","typescript":"4.6.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.50","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-m6WLjeqiE9PpPfV2GcR1qqStnlgPtEk1EEa7tiJ90LwbcUW3YqqgbJ52l02QVeQ7QnM2e4GrgEopdzU+WUJ8fg==","shasum":"ea71f49fee9ec668e90200c1785de03cc9e054cf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.50.tgz","fileCount":62,"unpackedSize":139796,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID8iMsQdy/3ovlfbzH6w3Q0G+oXhTMFYQJthjIF8TJJ7AiEAquVhDAkzJQGAIEo134MLZ6ko0Yn5s4vTdXJYxqKnPnI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifGhuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBYQ//TwkLVJjAS2JPZTkTNDgfgSt70Zt7C/fNYPDxoHEEEpCP4CeD\r\nOf4IP497sGNRhjUY5kmDtALmoU/a6YT7H4C4PZUsM++F0rBhsLZtFNGncpug\r\n9cQgriUueo46lxa3VTm+p+gRkDdgthdBE8f6ezHwIWBZFIrI98cEmp0YOmjK\r\n6XC0nHgFQ48M9injGTYykFCR1PKb8RgouG76+4raLzsQMtYvZWK74zbEjJhq\r\nMdtC/jU55rDdF2QtmG1Sfb8CBzVYHe/FUUiPkgyycCIciY9+92zdEV3T0VOP\r\nqFL7dhdlC2+RLTyHFwc/ERu+LFjZVprpQoCvrain7C9SynfzKfJ9Afc+btd2\r\nfUs3tKk2s43ftTp5VK2uLtTo+X00AL2KXJPVH7rIWQluS+nobxY3Wd8YtR/9\r\n+80rw4b3mDcvFwqKIWcpGWHRHO47DEebwZWgiLotiW732Nv5DJS4q4SbqK3G\r\ncuRzFGvPBANL9abIBhMmcxJhQw7p78GHI3m14RSx8Yq3XGcFJu2YKEHuZsO4\r\nK0O6Ub8/EUt5mz2UspoMu0caM0Eh3+N9kQvfGWeYD/SwYQRLPRPCAnO8bSp8\r\nb+Qp5C7UhYNjgj4lhmjRSKqaX1LWI0U79qvcdQm5wPwrcSZ0N7a7A8QfqvJS\r\nVcxcaGlHOKciaUdAORjgA0yuK1QRvV58MOI=\r\n=sHb+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.50_1652320365942_0.6089251405778937"},"_hasShrinkwrap":false},"1.3.15":{"name":"@leanup/cli","version":"1.3.15","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.32","@types/prettier":"2.6.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"_id":"@leanup/cli@1.3.15","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-N+fF+qfSPCU0luqOPWlKnsy8PlNORnhx0fKfx0LPMQV2wHNqJfChYbEWMluwvlbS5TrMEKe+RYge4cyMYNhD3Q==","shasum":"85df16a5b8aaa06c1b1a76e5d43471af3bbb6bd4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.15.tgz","fileCount":63,"unpackedSize":140046,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFO/gidUQVBLwrAgqJuuarKqIC20EHMS5wQ6P/u6ScgQIhAJl6+38E5StYnmzPvLDAZoM8GwPHuR9DDK7PwPLGQlsB"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifGiAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoxvg//UFhyTE3sy1OSIBm6F4yIA9G0dyWkQ3UZ2YRveiUZnK4jwZZe\r\nb5ure/Txnk5SY4C7U3tvHPSJFEHlhhq8JeHat1Drxl73G8MRlCHfT6TQ1UNR\r\nmi+ixKDguR3sj9ApwKQgorMboFnygXk89iiX/X1yOzuyEi4SkwnV5UspWG/7\r\nIuXEVa963T3MUaihQav/OaYkogKh4LJCg1IHIzr4WZcceGHNsD1ojeIXqwWW\r\n4EIQLcTntHdfoHfBbxowOCiBvNjc9+faNFE+H32Bsgocv1iBA/bEz05u/bK/\r\nA+tkYmyuUKvj1I6nAFzyohQOCsDmrmGTL+7pAFjj02CcjFL6alAvsShT+fwp\r\nAegd1le1C/wkz9Ueb908ozlHEmWnuHmnoFkjx+p5nPnD4OxLpMOV9sMzlWIU\r\nuKu/FPTm0Ysgfs80w76sl2oc0gP0YVHiNM/kcUfeyesJFFbXe/9sy6uVvdGc\r\neT3z9dXdq9GbfkJD34pFtcxD6F5fDknKANJL7PTAmXkxzP5q4JsZMznz9aUq\r\nLfuODoyE6asc0kO8Zf7NkgInSdsLxnKg9pTDYKbZK8MfmJrIfZbYifMZLkk/\r\nl6/c98AIHDHxa7jTr3dmvjhuQf+TgkgkaAMYLAVEm+mQ4z2h0x4WwGOkxHwp\r\nkZQrmAvxBPo6+oEA86aSQgmyoUvZAAmURfQ=\r\n=1Z7E\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.15_1652320383856_0.2509277871288824"},"_hasShrinkwrap":false},"1.2.38":{"name":"@leanup/cli","version":"1.2.38","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.34","@types/prettier":"2.6.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"cpu":["x64"],"engines":{"node":">=14 <18","npm":">=6 <9"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.38","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-ZgBiPoCRWEyWGyeReVFZqG7KzQlFRXp0eTsp5qYuS2C+ANpC6DigsGQ5N6e0qRZQADDTI8J+aSnoI+Em94E2qA==","shasum":"c9354d314bfd5fb92011cc81e40829cc2da6fc43","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.38.tgz","fileCount":63,"unpackedSize":139812,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIGbgMp2dBzuFyUSoFx52ix8w4Un1wnqDdjJKMcOKs1wIhAMrdgajcPHjNRowXk2I6m+X+cHVFD98V3gcmzHE6H6rP"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifGipACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoSGhAAkCJCAB578WJ4lieAjwHJLGcltRKtreR6Mw2VHUOrLAUtcRY/\r\n5kxnv/bDbnYbpkGo8/TUzQF3UZ6NuhXxWQhl7Sm02RezkG7a5QTCZEcfY6wt\r\ni15iFlju/Cj3SQ+EPr6/bqzax3WMfkw8IqQvKa03sp+98guq9rfgpYrJqOfd\r\nQtuFCJugfYGdhS7YrLflo/eyCk6txqWx0cVG5Iej+yFrqw/SvHb76YVy8zq7\r\nneqc1gxFKZPkdX1FjPvQsc3VS6Qf0hh6AmrQ4qfWUMBnLJDvv/3RkANKovSv\r\nLe/OfN40aB/LNd14JUCM2Nqc9W5ExyISsjeRSCFNgTdl6abzcuV8LfFy1veP\r\nlL7UV1Z1r1Zd9RoKQ4pn+C8L2x2hj0KXQPrSjoXxHXl0Q4ujmMjEFqx+ipeV\r\ntmkLPMD0wONit/J4udjW4lQacS/YZIKUWKeFBv8prR+YHu5e/20ieROP+LE7\r\nFwL0F0igFFKFt1yN2Aqk6SdyUJwve+0LZBTlR1rLeIBPmJucXEWw6B7l3Dqt\r\nVh6bKYioYddQg9UKuPwwFEWzCvNgkogbYCv3mth0FcUeipCF3LdtjovGQcU7\r\n6sgXBJHJ/Dw12CGuaI1Et6SRwFcqA842LkRxNWASTn02HvV6gu6TYoPGP3So\r\nmy9S7xNRWmM35uAzRaJ1edtTR4RjRTD6+vs=\r\n=AejV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.38_1652320425105_0.47405460014686507"},"_hasShrinkwrap":false},"1.1.70":{"name":"@leanup/cli","version":"1.1.70","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.36","@types/prettier":"2.6.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.70","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-8U5vVWGnz5JHD5ugZU4s1AtMXgex+jYCWbupB26gHUkcY8RPT/ubZvS9Llv0cniyuOwVxM/Il4wcv32R29lvHg==","shasum":"5f92a724463d3d74b6b3da22b035ee21327fabfd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.70.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICfNzlr+/gVGF/Pl7AVIMamWjZOYcDaF8Ni5i2SFnEA0AiEA9iyOYw8LA6+utftY+9rhUqnRES8hb16UzzDKFwkH7rA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihK4DACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLFQ/7BJunRd+SKM8UeOyXeb4O+LYRGPa+HGE/CIdpFjRJE7+nna+5\r\n5YOE2rRPaZxq4gKZK4+CTlygkMnVedWPeZ/6ng9qlyq61rW+kV3Xdvvj6pNQ\r\nt6N/aBnYM1dsI7EHf4vlP7v0NCMDeYTdiJ4wz218u1EwywXLxW4+g25Kszo3\r\nUqfujd7sHyWMDbPgrzp8rAFhlgZiPamYyvLGLCREmoTl3bV2Ey5/MXXm4oLF\r\nAOzZFlfnjTemQVwOCD/dOALH4FxP46YiBj8g2bKmoGyKrV9Hs8BuabYepS+G\r\nj//GegZ0sDOb33BuQnwJ6qsgnfawglAwog0ekdzWtRDLrWOuI3v+pXDpzPAL\r\nQmjtvTq9nZG0bGMcYycDNqxiGNCA8jZVpLf8eWKiL0igH6lzSYkfXkd6VeKb\r\nfMXdQJKlkKq2bX4icVDw2/xWBxDStyuucTtIu94KKkkvjy0v1S9jX9qptYF/\r\nXrHx8jbrq8X5DOuC7d6RcPMR+SE2hllBNLE5na4pfIrnyEtvhxObzPcDt9OE\r\nFQY+2Me4OMZzNCzGUTuWUZRUsAV7rtIGfrljW3TLvtFPc6bH8/FS5IM3P9Iq\r\nw4gkOpDWC9S4mK0cEclyDVuZ5wu130Wg4pJTgjt1uX7luiQnnQw+7cbmi/qQ\r\nrcR0/nL4JcYu45OJ21UuG4pbv4ZaGiwHYoI=\r\n=Kmyj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.70_1652862467687_0.9303337736160122"},"_hasShrinkwrap":false},"1.2.39":{"name":"@leanup/cli","version":"1.2.39","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.36","@types/prettier":"2.6.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.39","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-C9T6hz6rnjFsuz3vJU2EV9pdV0dbhV3uhuzMT1b3mZt7EQPSf6HZY7UuUFwqTPEOr6s6e+JSC+jJpVccg+Z93A==","shasum":"9b22f840c24b79a7994066612ad9b463a182180a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.39.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC92936rGgnPdlbYKGnimvl3urHkQC3//AGBRgps2VReAiEAmGh1SqtdEXPfT+Bbu9d0n4Sm6iJCswuLm/JOOuwd3y4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihK5tACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqASQ//SoNP3un/FOeCnfzE65CjQIoeGVkxQMFWXv1LW/hpUkCu70pu\r\nvgK79qWLgo7Dts+fMxr3ekWm2UgsDHQI4RdADCZF8GhvL6LexKLM/4n9ywRs\r\n1pBMNxDvv//zh1aNNL+My1fRdNJ7ViFDRBimowVjCm6gMCvdENgQVp87RcRY\r\nMefTyjaL2+rVqGicHTlNXSCzjFNu6h6pt7mgdJtAJ0kITWY3kpNQ/gI34y7c\r\nPnxoCKV9TOiI+llaHOHac+KsU8hYkKrwAasCmC7oomFJdGbAMPYQJRTZgd7+\r\n9Y/FMcV84mKHKn1B4aSwwZysPVu3G4MDOMy8FfhNGCGOtUFJHnF0JHgc44X3\r\nJyioOx3tFrZYEDv6aUgHwyASOj8uk5iAqiFHWDt9yzyPDCW/4d+Fv3V20sx9\r\nQ5hxPEgOBU0dvTW7N5psx7ZXoQid1GJF/N/SSxmyLmzNe2wAs11yZ7K6n0xC\r\ncPcclvfqFtNSwo3A5dIqxB5HHJ3nNfUKkwKq4SXj4c3pqNPv3qJ2vppZjRMK\r\nbvf4RJu6rH46FFblfrwz38FlURYb2EyW9KAVNXoKiuoc5/LujLwWgTrjGlfB\r\nRotcsu4nW7qVXsFbVIUpmJAyLvIt3EB3tdE5Pol7ZAucg6CPb0XP7hu2cAkI\r\nn5mldYEDB4qZELHPvz32k2XH/pYX1AKha1E=\r\n=LVBj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.39_1652862572988_0.6549445840270047"},"_hasShrinkwrap":false},"1.0.176":{"name":"@leanup/cli","version":"1.0.176","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.17.12","@babel/plugin-proposal-class-properties":"7.17.12","@babel/plugin-proposal-decorators":"7.17.12","@babel/plugin-proposal-optional-chaining":"7.17.12","@babel/preset-env":"7.17.12","@babel/preset-typescript":"7.17.12","@leanup/cli-core-e2e":"1.0.176","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.176","@leanup/cli-core-test":"1.0.176","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.13","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.51.0","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.176","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Y10LTEvniTJhEIbhbNqKtLnkSjs7+2bYTkDTGy04MNnyBQXT8l5h6enzBk/C3HRqM5JaSuG6aPxYLbhuzMZhaA==","shasum":"5fa9a00dc258b7bcd1bad675dc45bc86e6b8dda5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.176.tgz","fileCount":64,"unpackedSize":152167,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1yczOEUBaFlPBG1tHBrAs8pug6BmvXYwKxbohH6j7nAiEAq+yoLtfz28r+FgtBGCBAsVFNDhADXpylQFQ7rWKGrxc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihLHfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYWw/+KZ4HOxs+N4761tQI9g30CtTWps/DyzUYOwlQmqYI5yFepMYk\r\nbvBRj/aJHInVDt8M1amvVyLhOrWP3gUhAjX02+5UCgwiv86BwRLQRIRZ5yJl\r\nyRwD2EEZtENq6HsIthOU2EwGqnNhV3Lg72CGHy4KwmTvVW4tEErQfDU1yyFh\r\neJ9y2Fyj5qO2f3BK7C4N4XvIM5GU7GAbLyBbapslGof46lkZl+5jhvf22a2B\r\nv0nNEN5D4vB9L7Ak58jUani/zgum5cuiimPX5rHvHyF0aVRfJUb3tb/X6w26\r\nyN4PIPjhIsKWymp+IWPJa8SRsY/1pJA9DQtMV9hHeGebYJOrCNAInGrQJlYJ\r\n9xP2XaFHB9q6C2Vtko0N0MX5j1FCQJYa5mbNhwo25O+WaZAIHZmqft33UtbE\r\ntKjgHZXEH5arpSIQpmsZBZTLuSOyRK70/P+ASJHe22bc9aPfAUcZcJQd1Pxx\r\ncYPRpGyRRKtFcVr4fmTT5Y/uspEyUxpjjT4KFpNujWNcoUA6w18NH5983i/J\r\ncBPyQjaMb4AKoziSBv3At96KPa8DXL2GxPIaew4WHUDXqtSrPFv46mTKIFxM\r\nLZdPpjQILxv1SVwrCacHV5VtbeM2glBXYtLykcupeSjOeZAsUUWjBMqocZRq\r\nwrggrZZt/2tBCAKyWrOqCj495IYTRGmLPeM=\r\n=KUVw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.176_1652863455335_0.15397822154747876"},"_hasShrinkwrap":false},"2.0.0-rc.51":{"name":"@leanup/cli","version":"2.0.0-rc.51","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.34","@types/prettier":"2.6.1","typescript":"4.6.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.51","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Jfw2vyTkmZyDJZpGntZZCyLUO6/RjVDA3o30fWPVGNa7NLq/WsDBzP6DJnJBm5/x2DLO9V0U1DhgDAfGrrpZCw==","shasum":"5e649dd0650c219adb65792a8ca54110132e2d48","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.51.tgz","fileCount":62,"unpackedSize":139771,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3396mTlOunZCs9Kc5gRpNCnkdalTRF8fg1wb2WPEwlgIgc1PN72M3xH6FXL75KYu4hPjMgrTYmHvJHexqIiQbJ9w="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihLIgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp10g/9HQ4QA/eYjSTmPVNo4p/lMskhgaLSyXUeNKmx52FabH7/LdS2\r\nC0uwU4NYHgilgTYlMNzzKUTfuHLa2FSaBMTlU/ihMiivCIqrYvy6azjEn0i/\r\n8PB/mqju9YLs7DkWvWdFpLoFznK2Kl32lgdU5+vGiIVo7NXFVZhuFn6JjxTL\r\nNmd7ulJx/z6JrlB+ckthinC8iSv0/t/oSRO9V6XPPMpitW1SlcA7XtXyztY6\r\noG+HrOxRaVJPjUMqQ2adOd61dLEJzgn1OgFNkZPs80VIU+kEm0G5hY6bEuIZ\r\nQeM3UhKyRok7bncQFx3Z+PmGzInX431LQXNQD3HTXNa65kx6+RsfED4mvdVw\r\nbHi9IzVYFLwSWGFGxeyLmFTSIFLirPduAyFEawNmF6uCpBURYLjY7gpsiD0a\r\nLrhestkXUOX6Z/NCUVEC+f2rAzrRodeb4nt7pW+i4IZEJVRjDaXi4Ze/59Io\r\ncCzggbi/VvHbL8523xUwkY79ObBbAUEou2wN1MjC3cX9HNQ+A1D7oeJ0C1C7\r\n6Ts8nWNs3GbI/ou9Z+qdE74bdQyLVJ0WifACmcdHzpDnVoZhF60xiJhFKIHC\r\nyodLTytPgCdcOHVMOzRWgCthIUJxc6kAt8xGE6FLYnJx28VLykKjCcUuwbIv\r\nOzpQltf6Vivvx1RzSucOGw95WM5WKwtTnjc=\r\n=nrQR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.51_1652863520596_0.036946835160931"},"_hasShrinkwrap":false},"1.3.16":{"name":"@leanup/cli","version":"1.3.16","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.34","@types/prettier":"2.6.1","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.16","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-W9C38rrKPefyqIfzyPCVdxNbmDr1yuOvtXr6lNjgKYO/CJkD0sBaoIkwIS9QDApmdxznbwAKNgqYBaScYInkwg==","shasum":"b0407029d25979842917d11c33dd088c3cc0f109","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.16.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICU5K6TENrs5/7j7jf1JSTlD1lok2tRe9TxBNALZoEDBAiBqO1p98RSU3dERZhmGR2TpGn57wPCErpZMZf7Ym8gCBQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihLIqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp8NA//arpNHrXntrAunVYBRAV06lzvmu2FihofGMoYdHncWKTlU55M\r\nXjE33fAZW7lmWnoDW3/zuHmHHNMZoVpw2mLPB+Ny2AM4QJ2eMGUii/JzMwlS\r\nW4YuhCEmxzNPSMjCTPiKAqvyV9sgEnlgAhV34khSQtttZKJHmgTq3LMKHUd/\r\nuDr2MliWA20N5Uj5xqTbRfnXRNeW73CKOn8pguh3P94I3ftc+xU03mcu1enO\r\ncL9/KovEAdWsnSZw3GTKJ/QHxfhumsnlvKgDQOyMDnELkX/ipzL9s8qdNd3M\r\nzaMAoG0xlLWoOQWFwxTEZYBovcoAdDsp/QHZ7V18vec4ODilEu5bORe46yiG\r\nu10yf2R5cIsvwSVX9wOfJ8dDtjwXops51POXsX79YRQw8h2VLBsOIyrb7C+t\r\nN9Np/EHJ3AwW2RZkQBJoZKiPa5SdDsaK1hGc+GJzQ+X5vqJYkiEs5SeahZ/T\r\nQFIEeyEjabMV5+jkNu5ISyD6FJ+/YVsykZAkPKcrJAfxDs+Y8iF5BwoxygCo\r\nmqSQwFsSHTwKlBlMTgTE8W97QAfir94eC2Ml/A+//gG4z2cFSJQ6da9ijbU7\r\nGu/uhE9JX3ssxYNF6br04HAY+DpmtFqHUlvQW6PbvFu8iORKksZyQ1Voc9Cw\r\nOCzkXELoMLfknLFpXPOXu2mUGeDZjKENU+U=\r\n=B5II\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.16_1652863530015_0.773679713501392"},"_hasShrinkwrap":false},"1.0.177":{"name":"@leanup/cli","version":"1.0.177","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.0","@babel/plugin-proposal-class-properties":"7.17.12","@babel/plugin-proposal-decorators":"7.17.12","@babel/plugin-proposal-optional-chaining":"7.17.12","@babel/preset-env":"7.18.0","@babel/preset-typescript":"7.17.12","@leanup/cli-core-e2e":"1.0.177","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.176","@leanup/cli-core-test":"1.0.177","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.52.1","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.177","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-pocnDsUzwsRW/WoYz5ijzAOPggnqfARlvbMD4LLF2K0eO+8d3DynH1t/BHS3VKQN/aRNyRSwxB6Er4F0+a1z5w==","shasum":"6a1fe399764e4101ac36391bb79692a997729123","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.177.tgz","fileCount":64,"unpackedSize":152165,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDP01AD9orhfnX4ulxl8ofnckpQPq3zYorNuvkIsCD9WwIhAICs9mg9ASJZJ1VMLpsLggm4x3E9ZiViqBX3IRjKrvFz"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikAQLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpzwhAAmxL3QkDVDhHM3YE0stub+zAfcPI2VXilLnDezBNxocsNrSch\r\nU6lnFOpbcBHMqSja/AuV8Fh7iGykeUd5upbYHyzQSbxgfOzVlO+qEgp0m3X2\r\nGDLuuWt8nV3xZK+W8EDbUbqz1bT0iGor10XGulJgF4uyNPuukP0Jgn5xAEw8\r\nMAPx2N/ceXdcKUiYWUgUbyBbGlO266pKkmI0f1YpABivkhtdeEmtjNmh9yVk\r\neDl6HYzk3LzCiMfFF4h2SgYV6KoNugT+xuXtaXhgGjGOhHXoICh1J1sQUb3+\r\nM4YTSvjexnH6vjRKl17QZlcnYE1MdRWhNu/Im8ahCT3mikYgC9SBSw9dD7UC\r\nAX/fz9fSfxGsW6CcUgXhGfO6SvJbrTdvZKI7LG6R7XaR50N9EviZymyb0cJm\r\nE8+3ybeu6DssHQNLHspl4SaquBHJuaWKy+9+yNJcFH0CB6p2mv74cDEHm4+U\r\nrRgQ9yLO8Dd71mxQh76GEoxMgdJ+iPtSevXypLw3ED2L/1LKUC2yKI75eHeY\r\nsfCbeDHGmdpwiw2B4+vyvP9RWXbjqG7QYP8mM0PPe9c6dsFqdN9kxwbcBWQp\r\nKRvaCYrZj2s5TGKcdOZbMYV6nV4DAxmTUoHn+IXzP6p9Bynt5YixQnFRY+dY\r\npo7D/i9HQMOQVWCpfnM2rSDjy+z9aOxMVCE=\r\n=THgd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.177_1653605386930_0.865366117826134"},"_hasShrinkwrap":false},"1.1.71":{"name":"@leanup/cli","version":"1.1.71","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.36","@types/prettier":"2.6.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.71","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-I5kR2RbU1GlWo1+kIGlchSAypd0Sj1HQkUv+bS/8EFMR6BwhizdAx/rldAcl/L88WPuGvlldUu9ypCdfKtX6AQ==","shasum":"fb3f727e67e78cace8ec0ec62bac56f7572ba0e1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.71.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG8SPUfrvD5yf/XED8IpaVNPJI/6C+hOos+e/N/VcX+dAiEAy5IgAIHBIPzx9jeCZk2aJ0NZg1rkv35kz0P9Nec2fbg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikAQTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmonXg//btfIE6oIwqVxiL/rxYgfGn7AgM2pnBSsNzMq1/F2FdiOzFOt\r\noMHEOrI3sYZ7Lnk7YduCZ6N7Rof7B6HpLuHpidE7ebFdWNAbUfVgJnOGZA/+\r\nq+YO9Ut2ux+4v/dAM5y2GaL+Fu39cO2UaMfN0FlCnuCSwR6FCIdfRbq2chq6\r\n13Um8juhTGvoMN4RBI+GwyUEP2G8oZ8PJpX/FufX0AAtIy+RP6RhGc3/epFj\r\nbmE10o6b7b76bBVoCO6/oJQ3BddvQ3Uo9kH7oqcYLuiRNdLu8YY3Tjmq3HiC\r\nDMsd05Z4OWWQ2XOsla//xDugqFl1QkV+Cps2zA9V+RGfatOpdg4QVjyz/iNN\r\nZgLWtK55cFbF1a7Q4dwJI+eluJkyCXLiq5b3a3I1ZdUelM6mVcgjgGusd9e8\r\n3LiIibzO0RW9YMcBzD+naWGwxmMlln52RvtV+S7MAUe5vGuwt6cVTetrYez+\r\n+vx8fj+iknHm725fR85tdmhU/o8fKyW4ShgSnpiFXwiSWlzYhIv/ULNFAb6D\r\nV/E9kVXTchFvueN2Jje+BC2aR3F7DvBp+s8tSdy9jWIrXpCJp6UjnvhmCx77\r\nFWGYsS3oqeOCmAXnp2D11eipEx8nvN3jm9jJBFHOA0F5XO8wnt5/gL3c7yeP\r\nTAT8lh2XEUZO/B1IeqWTvnNgInApTWfRCdg=\r\n=nunM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.71_1653605395510_0.32099296529512755"},"_hasShrinkwrap":false},"1.3.17":{"name":"@leanup/cli","version":"1.3.17","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.35","@types/prettier":"2.6.1","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.17","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-m5Kl2CdaQhQpECzgMVXNfvvbkh0i5OYtUvtrX7JV1qasbhhcYh8Gm2w42/CtF/jbzJyVlAgLY7EE9rNJ5PPVCQ==","shasum":"6724402d263a99534761c86ec947cd9443156061","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.17.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+jhRJ3T7OA9aEfPx/kHs0pjlRhdEXx7eqMoqsk/0W+QIgZ/KeUn7+qrs6IS1K0jkRUQw2nKcFSKZ5n024J3g8dOE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikARJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp1/A/+ODunV9P3HrD+VM+ot2u7G9LxI9fqiSeU1bu9gREf3tPDOW3F\r\nnFB1NyKXSF9PQWbkgzZpeU6hAw+0LikDFNDKXS+/NEw+Zz28+EJeecGwEy/K\r\nRNxg82sEgVdRIqmnuObWAq5AS36SpPFFw3RAlOLj11CqDisbp1e5J7NwGOQo\r\nkiSVP5hTinEwpowN+CtGM3yl5uBHIAXyJi0cbRY3xGfLM8OvHXaz2pYrhGn8\r\nyChIr6Ewxe0cXDS7V11/ge5UN7SNAnn1SNqY2ZYXua982Lswj7pgqmyGMd4d\r\nPYdygidrY1rburvbuTPXNBth82MW6gL9M3Y4XPKcLwCeLAArplCJjWZEcYUL\r\nD+vhERnzU/uYOXbQY4BX4dxbiCTiAHh4R1JbcjHsQRa8kFPfMvLRqdjnJhJu\r\nqFcDiw7xedCRKmtj9g46QCv5omkfoLKxbbWseGTLQbNZTRx5JVo0RPMH+a6p\r\ns9cGKuVbdTIcy91hlfue6UmXS0/PxUjlI0TuKXmcREG2L/O8ItV0aohlwyrF\r\nFY6eR8wR/g892PqrHwWhGWyD1f+BfDJUXZvvdT8QJ6Zrh+CwEZ5N8vJAvcfA\r\nudcCKVTodgKuUr9m7j3zQVTzQrdo2aOUBZvlUdgFFh6uubjmgBtvgmCJw4Bh\r\nDQSny6xbusXeyDricvRzjXBdmJ6YiSp91+g=\r\n=4PGy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.17_1653605449202_0.2554308889722059"},"_hasShrinkwrap":false},"1.2.40":{"name":"@leanup/cli","version":"1.2.40","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.36","@types/prettier":"2.6.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.40","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-eLQoL+Ml19nqzXvmEb+o3Q3sgiQUZpl0wwU1nso7QuvwTbIdnrTPaWXFujMwvn8AOq/CgNQp6w0lI9Mbmhs06w==","shasum":"c799e3af975eef8788129c441295aeb5b0039e0b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.40.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGISyd/stLalIUpvrTsTGUNYWdeBy8e3zCp8NM5ovqKsAiAeM5RFPmvVEQqxJiapkkjnkE+7By3a2FDKlEM+2x36YA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikARpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq/9A//dcioAHSGTcCmlEsTlFa1ycBaOcwWmKYLTw3rSmTECaAXBib0\r\nmeiaqfM/wg2J7eq8ZPBgljGz8pqhxgjMMuw7zHrWlwq5dArFGfWaugloFInw\r\n0J9y6qyhTHSCL2FI5FXyau93PWeKCLSxmxIKU56xzsQuERIlXctwMENObL/e\r\n3Tesq0MCyrmklZsbBQ2MRVmBV+DXbgGigRNXDCGOXk7lhhfv9raYXGHEhklW\r\nbPJpFwMEsOMI2Q+frbgSTPL8RYdQqnO5AfdEhCOyjjZ83WEr6fG5u2Rl8l/3\r\nxhJSn9nKMfdPntwn1VjTZbJ503tfefr+p40f9oSnT2AR8nOUMVUxJVZADe6O\r\ns+4mV7vwB3N1SyGRk3JZGEsTpSSoS8Swr75nU7sqaATc589Oq/E4xT8dB9Xp\r\nTbtjVKbeANseSjuM2KGaidPI7lpystaTNjrH3pbtaXHswxts34qTIudhRsCs\r\nMjR/cRWYuaq6iAOxWt546iAUPspjImN9a8aqQSsy05Q3z3MlhNddIcybTsNW\r\nbbZY7dHrNnUTbiZVWqYWyLBfsMW53neCa0lcx0PeWEZvTAwzKFp9qAwPO+0O\r\nxyo/vO9LUIj5G3lvnYkob4m6DsVg3ya7FB0/SOedkKWJ3qOIFO2WJkucpvYO\r\ne2/6rg0uH5A59NchtQQ/p3meiCUVQZ91KGw=\r\n=kO8o\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.40_1653605481295_0.9139431723218909"},"_hasShrinkwrap":false},"2.0.0-rc.52":{"name":"@leanup/cli","version":"2.0.0-rc.52","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.35","@types/prettier":"2.6.1","typescript":"4.7.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.52","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-kBJZd0JDNlrI57oe0yGp/tv6gVy9uDNT0MU5lGwEkJLDfHERLzoCqdNS0ddrosXUamIrtiC9nXLG6Y1V3OuWUQ==","shasum":"3d6b1ec816d418cbbd5b163ca5cd8e970b7caacd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.52.tgz","fileCount":62,"unpackedSize":139771,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtwDaet363cL91NRla1cg4UvrqxWqOI0wTN2cxLnMP3AiEAvDyyzx0cMt9o1efZq9BjEurdDXg/qI+VFda4/KzB7bQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikA9FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpQag/+LEY+Ens8E5lBf/YoM+omEN9Ns6TpTPnyIktZ18LDPvNVI1ho\r\n3vZPx0mYln6Nl0m17x7wctMFrf0NaU69zg55nidj+WVJBOM+plz9UeC4ZeVo\r\nMIVuZMfHAYCMYEnhWdEVjwapB/h6t/TF/7o+HyHTeArRbqM3Y57tpdSvREnT\r\nFl3DX63UMLeFvKzd58zD6n8yvjsbgh04aUxd5/KIcYcxl6vixr2f/B8y9KGE\r\n5GCP++YtI//lT1nwrryfLIOEvNvO6TLfoyg1xJCSgqc0YXZ1eRM+ScHjuozf\r\nG/izwv8Eyhp0rY9pBWSGk850BrnK2uaSlMGS1a/MP7rY69/9KWFrE9YK4+vt\r\nNeYq4CDgsCcBYZhjxmZujaGuN7sATb/LON5jPSu+gzGhcyiiS1wyXmR5XE7h\r\n3vOhApAGmzH9aNep2v1ZrpDTWd7T/LKyJU+Yh7L2ko6r4WT2k6enL16ajcPG\r\nQwi4olnzsa8/qoMfh+p9hUHw4fT5f6WZWK+nKsz+2YWJYNczy+IlKPVUnsYS\r\nwItxOXAcxiSctQkYlliWBS0BdVA+qdMJOytdw2VXHtzHakEixFBIlglM65x9\r\n2G/pZd3Tt9UrFCvelkWg3cJFKz+SPa/sstNCF5b1NEuwlKnvmGhmVXZ/44sM\r\nNr0o35dfsbspYmiMWOaNbcYfJt19rKFqMn4=\r\n=PEVD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.52_1653608261771_0.5806537741709814"},"_hasShrinkwrap":false},"1.0.178":{"name":"@leanup/cli","version":"1.0.178","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.2","@babel/plugin-proposal-class-properties":"7.17.12","@babel/plugin-proposal-decorators":"7.18.2","@babel/plugin-proposal-optional-chaining":"7.17.12","@babel/preset-env":"7.18.2","@babel/preset-typescript":"7.17.12","@leanup/cli-core-e2e":"1.0.178","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.178","@leanup/cli-core-test":"1.0.178","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.52.1","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.178","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-e7aOmZmnRo3HUsADuUPZX/3SN04LNmCSFmW/0c+twvBd/WXgtTK7LsYQhnmvhAQPs/t4TxFbjQaQGhWFwd5ZPg==","shasum":"e1e7691c8dbc39ad287627d3183ab4b4cc8fc765","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.178.tgz","fileCount":64,"unpackedSize":152164,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEBhaFd07K3PZFyASPD+01bjO5ZlzwJCDL4ZODnCzHRfAiEA384GY0zuakDQnLsSOIfEjtsUXyu2e4ZjEOiKk1kiCzc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil/FpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmotTg//aBMD8ydUHXnl946/+Lah/miWUSG7eJ/FnU/RPf9CHqnaM3+d\r\n1bQPBH2t4y9RRJXAD5RVwOl5zjH3WskbQGr+mwDLgXfs5q1gFY8CUK14LmMZ\r\nT+bSRSfgHv3E4HZqc+QyphHQ4wjQcUA11g7ze0IQaAgsE/sR1xFwoP/EakAe\r\n1mFt9pUsCzGWJ9o3LZP1gVCpMnT5G3OS2G/O3pc1n0080CzpYbqcLQil6rtM\r\nMB6UaD0F8PYRw7yRbYQNO+8apfO86Dx6fxKBkpvzO7sbY8Bdz6jm8WWTgnV1\r\nqcn5U5m0F0xcobBzS+LoktFWBXu+4YMDQ+BRJf5qicwsrOFTMoA16MLFKVnP\r\nYgljR0cCJAejS47MiBwg3tC5Byc8D0CK05B+VgXgi71fHuNicTD+HAOwoi8F\r\nI0U5sEBE0/5ugIBUHH6wYzLPYpne34mtSwYBeHt4EKsb+PxS2y0Y07tSv8CF\r\nkogB0j3AZ5AVIF7DIiCawfSmQX9siYuziQDwAKf97FBAvBARFxbf2qaMC2/c\r\nKju6jxsvpBif94hJZrFAEo88KwR+3hr1exFUksumXWOqcTm/McQqNVttm8Qx\r\n4RKRBA7AvCpyvzwaXMa1TYMGYvfkC4U3SEKXDzv/oxQsg/BhUmZfvPPG8ClK\r\nAeGIHti7mTohEGZx3Ot9SUdzlEbbNMYhCiM=\r\n=CFZL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.178_1654124904977_0.28324063783675446"},"_hasShrinkwrap":false},"1.1.72":{"name":"@leanup/cli","version":"1.1.72","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.38","@types/prettier":"2.6.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.72","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-4xECypwiCLQ9UykfdTGKZ2WmHkbNLx8hg6Gx0SglT98Frv1h2u9HI9c5LzmNE20zwKmdvgIkNfhpYfkm0Z17pw==","shasum":"e4181f48e63b85e34078fc20f83d1dcc4ef49432","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.72.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDk52FWARJq5BRpuGD7KEj9qTvsSjQ9TaabRmvAJVkbUAiBq66TXQRJNhXDYo2YyL72BMPi+X6BSHmKQlsoJioDtZg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil/GAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp04g/5AeLvnkPoB/83bkldkr270JrHRba/s59JICJaga6AOH1YtaEu\r\n0boITs1nrNQUGsbckeHHVe0Sumxz0ZH4c4N1QKhUcfVHR84Be/e0y+g5evLe\r\ndIt6nXDdqG4Ur5h75OFj0bmg8tcK7lQ7xqVuv251CTE/g6WMY81kJIBD1cus\r\n5jnna3SgqZkJ33b4OnMduzTTQ1cSyc0Mwu6MyV/BO06bG3pHhI5Gq1kREouj\r\nWjzvNh6PIVXAXtksn9Jo/6G9AdPCgeKtyQEIKv7FNPNm1xe7m+B/fRJWTeGI\r\noRk3rH4XoCoLEELFiZ8LWjSexlAwNqN0jStpAicMuWo4ex/AWxosijmBs1t8\r\n4z2+kbzwh4jd/0aYirfff1tvWGL7RAHG/5ULaJJ2+QZRGFPYKD82kSNH0SjB\r\nIbMrDAYVPutf1Q34y0Uw61G3d354lrM7qniE8MYjwPD7sU59AET8r/gpB7Va\r\nIl92oNYBgMLRPcn328PFE4rdhRALLf62K/+eHp8NxOaDT0UII4xGiT3rScfs\r\n9EfVmWDm5U57CuIKl7GyfDrx6WgLSQQdAcIBBdKzkw3/SFf/FDgACNhmcej+\r\nxQzARvBDY+tjxjo8zOWzq8zX9iBCRWi2gLNdHF5zYzyRzwewWPJ4OaKXer1T\r\njPee1bqRM51MmprSdrDbMJQ1agfp/dAzkHQ=\r\n=jkUt\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.72_1654124928597_0.5785063937659181"},"_hasShrinkwrap":false},"2.0.0-rc.53":{"name":"@leanup/cli","version":"2.0.0-rc.53","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.38","@types/prettier":"2.6.3","typescript":"4.7.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.53","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-pbqahSffXnQ5Uau/WspvbsozX0/NypN0SxxKZ1SqaryjF7O/0lHWvsQEi9rE7uKIRd1jWW9Wn1kX3bmo8gXvHA==","shasum":"c73676f798efa7819f4f4ba794364015897fc4d9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.53.tgz","fileCount":62,"unpackedSize":139771,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhRR8NVF2xYa1Qa6RT1mV8m6uVwT7gh9VpeoSgFDsGeAiEA/AINXkK86/v/XfMAMuemUQbGEHj/6AEQ9k2YpXUWlYI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil/GfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrvzw/8C1q8s+auxK9qx9jkADvVhLY24HgSKcqCqqJvKZuZGDSv/aNO\r\nodigl+vn5addPOeh3NNruj1ff1gcLJo/sBZx/08k1RE4PPs2cN4siR23+RvI\r\n/pszni3qe92dyrlZSlMDIeVjVl138Ec4KmLNYPQnjEn+1fR/zkIom/O98Bo9\r\n7WQsBf3F6OF9joOvnPe1+JMvdOkLZvjJOv0WQ2MiqveOd1JoBYXU1vCqvHKZ\r\nYxRFXzSosoHLKdUG6bxT3Vi40c3O/HGFXGCI8qlS+jgmKtZyj+5siNOT0EU9\r\nFl3RmjTZltA2HUpPX/wFiyiQfm1iNA8eU88xWHpUB+sGf5/+tBXn0XWc4JEP\r\nJAAfx5tMpPOe3TTA8hISPd0IDLqaKrrYdyH1SLEpsF0kkDpdkIIIuTIDKiLG\r\nq8AIiLt8QBu6hazWAj0ldZdxfvohlRvF2JyBJzP2ns7/sGO8xrYn36Q+iPzU\r\nSQuD5SQOQdvgYxc9LX7vrTZCrSRtCQlXlLafORiz9yWGXO1B+ROuiTRsvr7t\r\n8W5qZr8KzADB9R7vgXh25rHLlnjeH9zowuJuODEosBYyqs1Zh18Vmv3/40HR\r\nVTiWwN2tIb/3Oh/JjB+JxPy3/KVK0HvlRkAsk0r5rOs40ZRPnSEM9JVtoFMi\r\n+8c6Re7TT16INi74zpPzCW4RWEbT4cxEPcE=\r\n=qviv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.53_1654124959191_0.7203679995450976"},"_hasShrinkwrap":false},"1.3.18":{"name":"@leanup/cli","version":"1.3.18","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.38","@types/prettier":"2.6.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.18","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-IwIXWE28kdU3ZC4NciFg60NLZ8JyECAHg+LlSd6PHMuVnph6FEzEVxkBzvhru3t9aLZD+Q6RrsDcaexuwfb5UQ==","shasum":"370a0967365f1b51c0481ed34a5f6e8f1f2a5364","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.18.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4pxZfhpHB+jtd3TgqvyEtUFNLkWJ+zkNoHp1Kt8p5/QIgeBezZU8PWqEHgsSVGs1HtgTz4s1So2mGp2mdN0ixHBM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil/G3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpIVxAAm67pf0uVYBfikmrFpib28gcte0dhl3gqw6ZpsYdfi0hPsVo+\r\naHwoNR59b0wDeGuGtFrT2bPdQp0JMYlCoE8QXv2qVZOLnrVD5KUjyfdqu1nT\r\ntVGeri3DkNRVxsKvJAHpPHSQCI1EYieL3k3Rm6ePKq3bClCI0Orl8+yLR7g/\r\n+Mtoan/Ky+4Gs5MvRb3Lg0uc7PNo/PmYhBF/EA+ukMJFIPXyHQ/3BXxSmOl6\r\n2UVPmvMKorqRE3HHSZlFidWYFsDzJiSR0u1KQa5MU5L6Faj+tF3MIGcIIAmj\r\nKW9sfUGSKluUIaO7vBXGoe20sUnaoxHW0ebqHGEELoiS2ipGPABSQWHrEfYm\r\nMd4Wo2vIMgnN6uV4Qu17Aq5FfWoxUQw1W2KGOQL3RwZQXKA774Qr75o44L76\r\nYvmY+uC/rG+d4yZRM1jLkSjEToiHi+9NJbniGP5zz0drHKwvajGybGq9X66X\r\n3PJS8w2RblxTwV2qCbLyquLzwxWt26Rt8TCbOhs7Sc9bzUfTKhfqwn4UY9Nh\r\nA7dUuXIZ3yr7hUcDzw0IKijNygB9ylCaHBLjZ9Yll57593Ml5X+/0NohwTrF\r\nLvZr32GyvtWOQubrsdGPT/2wmlkom9ZxTjsvolodYYUvMon4gfmon15g5JnD\r\nuLl3uY9jzN4Pxnx/x3f2LJF4yUI554+baHI=\r\n=AKuk\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.18_1654124983723_0.6446519295382138"},"_hasShrinkwrap":false},"1.2.41":{"name":"@leanup/cli","version":"1.2.41","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.38","@types/prettier":"2.6.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.41","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-k5FlZjXvIGS2B2/LAJhOAp18JDWf1H6z46cmSLKaPxJ3jzfGx4tDEgTGSE+7oDDm+/QZIkVwmZFCJfjZRuAIvA==","shasum":"7ea494a58c4d98a93fe2a13e7899ab10e8b1cd6b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.41.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvYdw/8X9j5AmDLkGCQ5A/u2qUkDHIvI7TxikwPDUQzwIgVJL5LXt6EzogSuv1SR99UfBHs+xgDwhbODePaDO5Klk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil/HTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4Vw/+MUpBsZpfBkBc5xDAP9KnPGMXq30Rm90b3yu87EzmWxslx16b\r\nd1XHKTdxt3Z4pJawhM4apPT3DdhDzndS5fonBtpXTD0RmvO7O+Db20+wVTx/\r\nNMDiMbJ6v7gmu5yw35lF2VPVHFVcOuY/an0MCFuKHO0Jq3N3iPxIRUvXmwBT\r\nqkTEdRZTMD5k07S4AjoyEafGTXgM+niTF0SJ3yHkzLm4KjhKJPm0TNEvPFLw\r\nl2h6LaqBQt9eC65ynUz72jvFvFL2KKMOpfwVMFNX5bMYb9vJxuljsU5e+Ln9\r\nfDI8/VZetymzucXQ/z+uv6gHkAE4DK8QEu6LNX6Ww1EyKYVbhikyPQwEq/7b\r\nX1cltzUjSMS67ulPqo3kRnuS6vvHkdM+3LDord1WqKro9/TYafme1i8wDMt7\r\n2bPf3TFm8mpJNHeUq2WH7/H3+sScrr4R8TggpWXTY5YlOt/yNGg+OtF0FGqu\r\noT/VgCzYkJvZOMBRXQY3W1E3JraOmDIPxfOmeijUaj8T7/ObVxVgE+GT0MY3\r\nMLaPopa3cEWk8ckEliAnCov/ayAIj/ifMD7brm/IIrMqcUWED2AeALEJO2DM\r\nK7tm0X5oKbhwFvtaBmlCmPSxOj3LFWDrDN55Z+FoKpDbUc3tL8koNzpLfun7\r\nUcEI3BnVVBIIDynFDb6WnDetAjpQy+fsUfc=\r\n=opkb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.41_1654125011694_0.4597370961013221"},"_hasShrinkwrap":false},"2.0.0-rc.54":{"name":"@leanup/cli","version":"2.0.0-rc.54","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.41","@types/prettier":"2.6.3","typescript":"4.7.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.54","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-jmMniNMNtNs31Vhs3keexH5rJkVVjz1Hg3AQfgf5D34oI7xGAEJk6FmLehTe7TmxWKnEJ9rMUQgSbPAeLKA9+A==","shasum":"5283f3d5bdf6e35b77b9883cff435f53f5e3cea0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.54.tgz","fileCount":62,"unpackedSize":139771,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmwosLf3j1zfcujmV0722w9V/oAe812TjBR+Z98nGlMgIhAJeaLG0XdB3J5Qa/PJJVZk2v7B0eu44FKEDLc3ismAFZ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioLP0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrdAg/9F9B2X3Ch9ZxOhKwyp/+HLwHDBSNCpNcdGH3cBZfUFPaiKPYU\r\ngoJJI3UVukImchPcqUP7Da1uv5gACi9CR7AbTASCbHPlBfALwMwtf9WkyL48\r\nxVkBmE4XCGLd5oIYrXLiiJGWPQO6PCLef5IGWhVPS5UpUZkJFey630Tsry1Z\r\n1HMNa2QvA8eznuxoM2Xx/0NbCpgL4BsMANPBT6b31DEwY2CP7Qys3BxcKUVt\r\nLoswkXr1FQIa0PCH9fVeE4aqSMPca2ruepH9h9Y3wuAV3fs7KsbcujDUJ9NL\r\noDay0rs7SrAglEneh6WQM13SaI2NZ/kXea1duiGvPifNF37FFDIAxZzEYk2q\r\nKfcxGbyPXms0OeFNquJ1GlRMS2ruyb2LE8v9BbdB0NpE8+NQ0yPlBzdDlZnz\r\n0TrZHuLVPgvodKG2+qoW+q1NTPDdEfW8YRvpBEFLF0cMjEXrpmxl+8xvkOgB\r\n8qJToI6p4W5rUbWYW1vHo/GzTV6ZKsT8HEeRXu8Nfs3w5+AiTfAfPF4/NJnf\r\nMwC2J4uHhGYLoonxa00jaTKaNlCNd0O1G5wps9o2ZRpesPFbeK9o599R9CrB\r\nGSLrNB4hhnwAqY4xGPNEpHE3gfO+ZKR6RC2zqxPgh2v0xQ8yL/WxGjtNzh8F\r\nmS6RnBl2Tk/hDgQ4YP1JDORn2qIY1FvU5B8=\r\n=KoVh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.54_1654698996634_0.8525812807199442"},"_hasShrinkwrap":false},"1.0.179":{"name":"@leanup/cli","version":"1.0.179","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.2","@babel/plugin-proposal-class-properties":"7.17.12","@babel/plugin-proposal-decorators":"7.18.2","@babel/plugin-proposal-optional-chaining":"7.17.12","@babel/preset-env":"7.18.2","@babel/preset-typescript":"7.17.12","@leanup/cli-core-e2e":"1.0.179","@leanup/cli-core-format":"1.0.170","@leanup/cli-core-lint":"1.0.179","@leanup/cli-core-test":"1.0.179","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.2","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.6.2","sass":"1.52.2","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.9.2","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.179","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-3dEcnyRtxuiVM240GNNwgM9XWXkfezuTdbj/yo/CnkWUjhYxOJ2cVcklDQdn/dkc/VQnzwjp1axYIh+pA8P6tw==","shasum":"6ecffe34368d0cd52f4a9acac07a179490fa83e1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.179.tgz","fileCount":64,"unpackedSize":152164,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDR8C5rZGI0pgdSWmFnmfTjhD21AzotgLwvhNqwiHT0rQIgMmhhDn2PdU0HVEd2GNQf0Ep8pVKYkXetaXfxs381A40="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioSPFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoh4Q/9Hpg68nO5tQQvePng7K3I2XMeh+VUEO0qU6m7C/RgpmtlOZm/\r\neOnIPVHzxKvJ245YELe6vG/uWQSSBBDyKHveVqoU7oRTmCWuNDyvDYoTlQJJ\r\nekRNoWLz8PeP9pfp7QJt0LQgk6Uz1obA1wfKYaZ5ks43oC0DKYhNJwx13id4\r\nALUsaUoPumNFjJm4e6q+7j0azCquhUmchAyXjK58rFvdz/F4zxPVwVBVWW5X\r\neomdlgm2d76PArmJ7YjWjChyqLr0af1N9oMtpmeottJdBExnndHV5j8o18wF\r\n/vruN0EMHbDbC9a29JQurlgEy72hbzNeH2E+OgA0U04EEHRSUIvhjS0fzvOo\r\n8troZfVxvt9WmjggXlGdg6ZY8HmnRYhDtnsyczfMeseyz7Tgjkmwl7LcklZB\r\nYUz/Z/bMmb6L15lFvCziyEvLMqcWUKj9tF9EYp9/p7VMXatZexRadddYsAhV\r\nXkcBbAfhHhP+Oa11HSgqmDFO8OXSZsVgCXYzYj2c046f30V/ZPC5MKoc//PH\r\nHXn44UR/No5qHniAs1pSvNmaznEnV5iCYFheMREFYadsv+jtzuHz2BoNrK+S\r\nmdAwLN827EbQ8HTfL1vDlgbYlNm+qd28usOGqjwgc6qPmIXmq0l0hslcswDi\r\nz/4VJsAfGpm0Zq/O5VdagXiLaTOEorsuMcI=\r\n=OHyd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.179_1654727621381_0.013862557187012126"},"_hasShrinkwrap":false},"1.3.19":{"name":"@leanup/cli","version":"1.3.19","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"17.0.41","@types/prettier":"2.6.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.19","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-SGlO5E/M8snCB+dtczXk0EZazPsInwW/K9956IQw4fFX3xnsZyctNFxE/dWowtj8Hqo0LG1W250z2LFvH0DqIQ==","shasum":"28dbbcb4d69bae4e02f33b4dab033fd294d48dd1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.19.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlqVqjhQ3ebsh4WbcfbeQhe2zz9N9FPrh53cfxh4umAQIgcqMQJ4BkS4N1uJNDc0iVdPGNi+yjA6/KPiGAhZ9tOo4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioSQBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7ug//ZlYYvX+kQoTsc2ku/un971v3npEAOgubUPhDikbLL86mneFk\r\n2M7Tb054b1d9nUPxjzeNYhIG6d/xWI2pQt8v7U2lXJX9juDOu1BRgzTsUF26\r\nmGKFLWMVApRmamn7SyI+1Bbc45a7TIiiL3tBr2f9AjIyi/zdJJRQ4fdPayfg\r\nXnxc7OnxYNvHW1hntq24yzifaZcMX1ZvM36I+AUGijWDf+hGvQD0BdU2RaUv\r\ndO1eiXwr4b9mQC9bctbUqd5PNOSNdKHO61DWIMHzv5OG/zcmgMA0KtDHL75L\r\nroslASysYMneCXaLu3/QEzf6rhmosP/thPZ+y6T4pKhBRjGkDbKRTZXVzM3m\r\ncgtWNdzonqbKGXhUaNAaccfcQ15DSQrAsiVuPgUKCCHxwPmvUd7iu89Q9tdT\r\nSpeHs7zSdL1VV2zmtARXvlCKiMr3bhYkq6LRwkCuwzw8IjNlHdl0N3x4Vddz\r\nVf435V7eie0rPN0qGn4ONKQjqQMSj60R7EaSae2aLpliTwDwd54YwtkBdAHQ\r\nAiL4hh8EIoILxqJ78A6zOcX3BOq4a5NECbRPxHI0U+3D4BKlgiPhBww4OlGk\r\n+J1bf6mxsk6PmqcCHX+QdMLY905P7OvmPmMZ0oX3recn3VYngTN2zuWBuZTd\r\nbdb+EPMAAyEEY5mMOiVcbPb9W+OymvllYD8=\r\n=zeso\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.19_1654727681110_0.8554559653185139"},"_hasShrinkwrap":false},"1.1.73":{"name":"@leanup/cli","version":"1.1.73","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.39","@types/prettier":"2.6.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.73","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Nt7R56ZRMC9FKckMeUhGM73KHKS5xAzkiP7mxzoCF7WmKCDcrVyL4oVHVhqmF0Kqu8P6S7DyegYoC0DnfaVWYA==","shasum":"f7100bdb2df34677a66aaf703f85af1b01a2f9ed","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.73.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHp53GK38oxP76KxowwCHViDCSSILP2SbPAxjC7DnJaKAiEAuguh3yoaTSOaMXIdpk0ZuhhWfOvozNzCQpWJ0N6X5eM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJip6BeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmor2hAAnhAJDQQ4Ppprp/9wSv9yoJaHZ68vMvnrQWipMYRHSF9Oi0I3\r\nFeon3bfvxUFa+lE7TGmfop4GYMuKEDEvdp8hvjagM0NSVTvzbzAR5yC3YtNw\r\nrRTO5v42M5G78PeUbmX9hdX4LrdjkqEa1n6EChq6zjxShz8G3n/Bq1k01dj9\r\nELTgrvOWWhinqLLwCVcKBeoaCfBOqJCfU5kSeJ6uHQELX9XDrw7as6SQQ+5q\r\n8NxIqdcKBHsjOpEfPVlaKXIppiesT9JWEXGuW+xIpo3nO44pOPSbkRJ40Fm/\r\nf87hpH7yDdZrBR8MwHf7GfYLZlggM3crMshSon8/HGsrUb9moT/Mt3EnMhTS\r\nqmJQwdX4EZXqPpjakrI6LQGSsY1mfWKMl65IpfgSPFjUZQZlYV24FLJH2LJc\r\nS2gAqscsuQPaIQTN2q9t64qbU8/uVGmDfYBFjSU3LvHUjWU3VxkZpheQ1Lo/\r\nc0/gUkM9VW+5CRFz1jCukQ3SpYMbuW9Q5YoeJmu0RpU6XPaMQ+Kyuod8MnSl\r\nJ2PQvSyzpN9k6B7FGBak1v6Y9NDeKHSHIChN10QXaFoQojJDEQCGhxwptycA\r\n4VBcFrW1GkuW3Ev+TJWq/tO4Kkl6qUKfbM30H4gUzOveK71t+Xy0E++R8A+0\r\n+7JGHWayPJ9btlK0JChmgwik84Q7F/vBwgs=\r\n=13lp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.73_1655152733762_0.33973621912656893"},"_hasShrinkwrap":false},"1.2.42":{"name":"@leanup/cli","version":"1.2.42","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.6.2"},"devDependencies":{"@types/node":"16.11.39","@types/prettier":"2.6.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.42","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-C2Y1yHTH6Vd15Vl9wqFqQTqEaUo4XHp1HbWGFCHQXeMbkoDLLuX8/dDxIYbk7LSq7bSEp7NuerL79/bNVkarWw==","shasum":"d0367f0aed6956c4766d348a787b82e29bc87f27","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.42.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT0bIiShq7aSjm5zMiW+XH+5yON2x9nCyiew9Uu6+MNQIgEKkb90vTzsihF4GIBN174xzrb+R7hfBGi6bcg28zs1k="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJip6CsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqOqBAAjrkxGlmYxrPskrDakNvr5vZJ1R/ok807dE4Ft7y7EuACVzPl\r\nD97+K9S6Q19/TEIGW0cQyG2u+KSWSVbQ1pyqjqdIrG738I/sFE7Z54h8ilP2\r\nCJf79wobFxLzdri754au/c3YBoah49WwuZsx2LWhiqeThCbbMDyRSFH86afS\r\nBMOE7pGQ0svsc0fLR355GtMMySDetGqSBOduKOFsTvjWqo9lnwkYyFzja9ja\r\nYe9nSHLYsWnN/+feK2yU74qmVfKZNyHuJmWPkKzaGVr2j+nweVIL861hMFQQ\r\nzkOX4yXfgSGEL5LYkOPl7RsFFK7BwWhHp8NyhLrUiJr64E9BZniUp0PRAWfX\r\nFeCN1Esq5n9o40IvfT62dCtR3T7QfEY5govXKjcwBDoDamswJzib24R5s0WM\r\nQ9P/wK8oTeoDvrGgI/GhyIHxAdhCQzzF4JDhSKJHOAhogy75I+M2E+aYox3v\r\nQhlF7KK3LIEcUNmDt4SNyRX/qoc1HF1GYvp7AfXb2kJfCXoALYMVHUNy8/29\r\nTDgWjGwqrHKgRSOFGPnMpy/FSS0tovvNd94tXSgpsenOilqrEuuZvoPCxHRD\r\nx+hbnsDVTsbGJfrFkWe1hINWg1osOHaSxdbvr7fv8fWVJ0EwtYg6tiRZCzwL\r\nc22QISn6Z0pHW8rBW/9UlJWGY6L3GJpjJ5o=\r\n=dM1v\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.42_1655152812315_0.1695189937586028"},"_hasShrinkwrap":false},"1.0.180":{"name":"@leanup/cli","version":"1.0.180","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.5","@babel/plugin-proposal-class-properties":"7.17.12","@babel/plugin-proposal-decorators":"7.18.2","@babel/plugin-proposal-optional-chaining":"7.17.12","@babel/preset-env":"7.18.2","@babel/preset-typescript":"7.17.12","@leanup/cli-core-e2e":"1.0.180","@leanup/cli-core-format":"1.0.180","@leanup/cli-core-lint":"1.0.180","@leanup/cli-core-test":"1.0.180","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.7.0","sass":"1.52.3","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.180","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-LeAXVuXqi8Z4N+krzDTF+ErYQnU/MIzpWawGVXUlXa8qWBaoZbolxTy1IoWTMbcQ9+hL5sgUED0npu4vu1hSwQ==","shasum":"5b63e7bd98370592c5b370e7c3e453b383dcc1b8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.180.tgz","fileCount":64,"unpackedSize":152165,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHXSBbxZDCOGBIdiryeYyJ309WI+aK9gaiHWgXjsLuJrAiEAwBru09ZY/IYkasx3ZXV03/KMw+RxYnXFInB88nkuLGg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqhGwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo86A/9FFlj4dMx4Ljkw8tPbwtDzdR/pD5A3BYJS3KXujdHpJ5vWSfh\r\nkot376C1L/XTQI2Ru0cipwYzPA8xBVdAmvB9mnIHwhVHpo5x2RZFcNsXx70L\r\nhZwlrjYgEZrPURjbzdQuQzpTwdfHzL3Vm7NcSH9wZKULKWLTy4/CpWInPYKI\r\nDUv5H8TmyRftb7RkYZ2n59vMkr5hUF5bVi5VecibFcuBNgjNWe/n+NrGyoyy\r\nTKc/1z8ikg9jxXJVlbRMgBpzNgOmZ6ztN7k76AzQFYVfB8ZQgeA4/I5SKqiN\r\nXza9wrAKKsR5cLrAalUKiR4lIXrh1RqRq3ZoURLXtQIu7PvzVJix9PIv/KAe\r\n851sOvQPa2n4Tv6qgZT03W5TLfzl3azV31Emt9Yd0x30/fYZXjQXArPqfMeH\r\nSqwZtwlYk9RJFZa6mvGExjtDoHZGKk/A4B98nqZlVMy/lSVVKDbLULvEfog+\r\n+6SxErNm/CYLUNe3tVWXrlE2mpjbFZZuI1jCGY+ftJbzIT+H5HynkxIOUxtz\r\nOVjUbQVdcFM5hs2Clo3CTzu3kW8YcALLbY8OlCqGx7dJwMREqr8bOpfGZJUW\r\nG0KywYUft/oc/KugbcQIuy3ChVXVewPNway8SGrG1GqvBaVc00GiCnwAFOAF\r\nbavEokXgiIlKWKreB51H37kr1VvHZzoLuL8=\r\n=2FU5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.180_1655312816197_0.7290932819332683"},"_hasShrinkwrap":false},"2.0.0-rc.55":{"name":"@leanup/cli","version":"2.0.0-rc.55","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.7.0"},"devDependencies":{"@types/node":"17.0.43","@types/prettier":"2.6.3","typescript":"4.7.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.55","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-bLxRfav9+zP0TCtmfCEUjbzN9E3H0kIHEKGE/Kd1u6iKv639wlBdFHgEmleAdjADglSAE6bjDZuvqCZK0gCh/w==","shasum":"1d4e7640088591a54ef6d2f3356671d1747f817a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.55.tgz","fileCount":62,"unpackedSize":139771,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIrDLBTuK6U4ywAB9va3VlYkNhIlu4wJg3PnmytjnnlAiEAyXMzEymmGR5MBbLEH9+rIpFps8aTIHUtbOKyr0G/3to="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqhHOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo6ThAAmfZyeTIlc6PwGjk6WUtM39+oLnLQYR9S/cbNiCqx2iMu2Rlv\r\n0BKbRWs9Qa076wFAqh+ajmmYkCyRXJSxNxbGkVr+7nTe7g6kdnZDq2BCNVAv\r\nHm5EtUmcbHlM1TaEb++nxBcoXxcXF4laSagsHUss3aeaUp96cAmziivSoZBz\r\ngIkpZjmhSmY6pKJ02m29ntHOnG9kXrnuci82jgPzGrS9S37xwhJuz61m5u/x\r\nskaJdhKpDpYHe+cnsOt5vYFMFrLWYCyfKVYKgEHgBLiBaTr77h1eZJLNNLpI\r\nJm4Z3sjZPwC+VL6gYlzLuOkgSpLdCl45BVbeVlPzFdJIHe2YGEflhdcfmZml\r\n4PBs0C6GYKRpFSrlaQBJZ7sICP+uxci+RFGBkakeY43qX8taHa1L1aVyL2vx\r\nECKrAHVLiXGyO8tgi4QqL+QOzLLK5gmpTM+Fzghkf+/evf9JPCHkKMpPzZ9R\r\nbFPEgBdNSk17+MdNOcwnIgcP5MSjCh6mm2/51cYMBr9u5UTyPHBx076dclg7\r\nQMoZd34zI7CrL+CjKo1NJEbktwX1zLApfkZ3ixAVb6KJWz6BLF6fci5VA2Br\r\np6019c6ypzN2O43/KnKPo2sA5W+AkLq5doNr6viq8xdRul5yWiKpn59170gV\r\nhTvQBZLZEvPMdbTDerYGH62+CwfAQ4hYuwY=\r\n=Q8fb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.55_1655312845890_0.45066883931936985"},"_hasShrinkwrap":false},"1.1.74":{"name":"@leanup/cli","version":"1.1.74","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.0"},"devDependencies":{"@types/node":"16.11.40","@types/prettier":"2.6.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.74","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-wB95FQ5haMqMX2unyljvxEeaK+RGCkiBmkcDJsLBSC0qN6dz+SlEi5NyuzPoqBx/Uw/5RiXWmxkLp7vbYeKehA==","shasum":"dc9ce1497e48ad2f82f0c6bb94c36edc6a11bde1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.74.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFpzFKh6G0DsrN/sfG5A7WN+i2KipVG8F4z/G6Ta6AgSAiBgQEg24I2C8gn68y0fXhU3Y9ANKhmiYwlQFydJyjQANg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqhHWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqBXA/+JtgmW2aahlc1wePU94uNiAIk36MWfwWCtJo5HzSD58qYRA2E\r\nbKY3Y7Qy8howbk8WABzd7jB5sW6emxMy7FT+wsS+Q1GCuiiKyfxDgoYfyvR2\r\nw9xgqcnq2N1t2Wze08QLy/DtLqw8jtZpCInQxAZ534zM4623zglrl+DLel7p\r\nYz+ZE1zQTKQkxB5ksxb5C+y60h1RMUz0VjaCQ+HTAKI7zDuh9KPfUgInbK6v\r\nH7U52BB83NVvcnfMIrDhUfji9ZM96omfJR9l5chOYMZn7JHYAxpfoohVCRtZ\r\nU/jx+37DMXib1P53qEF8awilSVLEs6TQhh66EVvjty04rgw34pcu3iMyeP/K\r\nITBkTiYXKmts5JI9aF/gehWNhGgxdfvF0RPcYqwQi2A/hWZAcb/MA0sIWk1p\r\nETvJcdjEZ3mIF9JsKXqGfvYAR9aQw3Zl/6aMKFboX9eT563TXDSu1Fxj04ZG\r\n/PkLP7DeDHsiIOf1bfaw4CoVmSrw3yOxa2d50hPw0Wq2iRWwkf6MCDXwPLyG\r\n6/wpyh97hgXcgjELaXSOKVXIdhdWsejn9Ljo0dKUqnd2BYHeeXreRE3cQl3q\r\nlKL5/cTLmo4SRrn1wXoQycB8RycUao/q221MZymbLDN7vtzWSKxKW6xciK9z\r\neAT2fI+FY7WwoUDkGBmGPYmrjRD/UdTYgAU=\r\n=N0cn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.74_1655312854236_0.6478804864188679"},"_hasShrinkwrap":false},"1.3.20":{"name":"@leanup/cli","version":"1.3.20","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.7.0"},"devDependencies":{"@types/node":"17.0.43","@types/prettier":"2.6.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.20","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-vEKzNRvJiFAJe9FjJBpKoqP/sQ3jXQ4xkCsKcjDuqE6K4p2JF9LZJ2MdVqIXs6/qCgRX58g55wPUt3ofCp6w5w==","shasum":"4299b7e323cb68a3be06ac3c9e180a4373f550f5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.20.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGt2GtLoYzBpSrn2W2bg/EqjrdoNpQzUj4Nz6rlXBntfAiEA6E4sOdxoQWcO+dDk/Ef7O3GbsV74+W7QKMaPIof/W/4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqhHlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpqgA/8C5bLVAjD1A5D0b5hI1l3x+Eijeg/bzyHWW7LBV6z7EQYzZ97\r\nJUqTfRAvs5yFr1YRuhRUr38wfj8FBEb3A+K828X8wXkmgdkpKT0deA3CFtsc\r\nGHQTHYO78SlO3rwW3qIv0zR6eZcG0OV9e0Fl0/HRHZuQULgfaSfCYZn/J4ZM\r\nynvp1VQ+SwBNh7U3dPyAsMkgRmvOQWrWnuhkIjNucAcudY72GeU8Ks5l02Ai\r\nqlrERQKq6CYdwljASGPS7z5RD9+E23wHIglAiZGkWY+PRvE+s65zhWcV34bC\r\n1j9KlhI9mthvtn4YdfrchtaJ6fosvthrvXy/MLPMY8RIwpKPYzoA9gxKX927\r\nuOw3kxtO145HBljzdVZryYv/aAL2NFbuUQUX839WwWncU5LPGmlYOR23uWIk\r\nK0CaLRgZcnlcGwLuu6rudd5UVPQhnY735ad0pUOEYtxDc9Srba4JYmJIPbbe\r\nHTpDLBCRxyqiZZ/elSZpvmQ54Ht9ekRXxyyu9iAtKnyyCurIvMFnaNDCISEs\r\nqrnnwM5tewv3o2cvh7ZNB1G9hS1mV5HXIpuxjBDocsyrjeYE+/27cVxJ/LuJ\r\nZ5gawX3XDRCbcf4zoPn1qXsYG6XtNOhdRLzcmOe+iPbmYwvvNbDFdBkKxqsZ\r\nS8FhpN+YJBnNA5nJ166A4mnfUePD4u4hQZE=\r\n=zKub\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.20_1655312869169_0.5562395090612848"},"_hasShrinkwrap":false},"1.2.43":{"name":"@leanup/cli","version":"1.2.43","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.0"},"devDependencies":{"@types/node":"16.11.40","@types/prettier":"2.6.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.43","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-lTnnIv4h/6+tGsfpgW2TfDO5mM4WXJXnjYfo6Ux7LlslwpEBjp74JVSs4tykO6CtXLTJfJf7cuO0V/X4FQhvpQ==","shasum":"ea846d0fe8df66be6ba9e50cfe9642bfdeee2864","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.43.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA9TOSuvDBmnKWYfwIwtLfT5LL/1BvKJaz5USfX1Dv5nAiEAqWGgffa9j7pa9ivmKELxuvdOs0yiU8eI2tBDcN3ZmHY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqhIJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoeoQ/+LJksORbRKyh9qG/a0O9DUd9J+ki3SPiKOCGWTEyMwGuKedQ5\r\nUg2LOWaSjPzY4PUJssGPwSfnfDdjxrCV+OHr8KyY1W9GJLf6p0Nq2/Q0j/gq\r\nS68bPKVCM4GK9KFb7DpbhwoObt11ZqDYeD7lQ5kINeEslFGnG6qxvt7BH39f\r\nI22G/RDULoSXn2Oeq/ZjF5IoLiY99PG+kBsXx/TW+qMZgo9lXj04aCEg9Pk0\r\nYhhj+kRB7IP4zBKEdfE48I0ZbZB0LQmc6j1VGviOg8Gus8eD8IyT4m0B4dg5\r\nAj+Ji4LRjrvHWPnPWwO2/Tb5gDqeIUk1HVB5Fy20Ht1aA8yGUQYF58ahOxtZ\r\nnqzly4YbjRZRIzju+IMEVs7x5jbW8dfw3Bv+2OHICLJt1wK8KQadhRba5N5X\r\nWYAvGvUdEQw5hfQjPQpG4MYzRy5UOkFnet6yLO2wQO4aqgP965yM41Z31SOF\r\nhMtjJgsnPLrlCvO+m4rr7iV1eY+C+QMj6IHGwv7Bsg54VwoVkXXOz18cleqd\r\nqNfzON7zXOd/QP21wVxwhfG0r2OAtdiOE8b9cPUsZN6zL9sf8jQI7xYjvjo7\r\nQpC5lEan0Y+1bXGMZV8kUrxLrVHqcc58vmHBe00p84a+o1Xv0/Q0vwYOO4ya\r\nx7MS37ecoNM7nu7wze+zCUTDwKW3jHkvj/g=\r\n=gT4P\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.43_1655312905107_0.03333426834304731"},"_hasShrinkwrap":false},"1.0.181":{"name":"@leanup/cli","version":"1.0.181","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.5","@babel/plugin-proposal-class-properties":"7.17.12","@babel/plugin-proposal-decorators":"7.18.2","@babel/plugin-proposal-optional-chaining":"7.17.12","@babel/preset-env":"7.18.2","@babel/preset-typescript":"7.17.12","@leanup/cli-core-e2e":"1.0.180","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.180","@leanup/cli-core-test":"1.0.181","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.52.3","sass-loader":"10.2.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.181","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-fMlQ6cma8IH9Tkz0NU0ZDfr7+1ZT2rqebqoaSQo4pbzimKNbeHBT9DSTmpUO6RFWIJ4r0R8hglgh6HQzz+tifA==","shasum":"8ac8cf311a27f2668219466a439927bd3e1d0f54","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.181.tgz","fileCount":64,"unpackedSize":152165,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEz+i+1oXPVdUwf2sNNxX8MAwqz2L3DwHTAJt8e5tqlIAiA9K/PK1s+SDNM63U4GIDjxqoU8OTLwoRWS8FLYDXuPSA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuNeqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqC7Q/9ECpOJZfN33N95TpXUoeVlB221zQYx8Am6rgG6m/QgB1fh060\r\nqZdkOimI0YxwkrBspuCpKmcEATNInKgzSPw1aRxZ6cJRcFiyBn94N22A4Il/\r\nSb7ZfoonsUcskd2P6DFtU3p00Xa5vx4v9u8suB/B64CI02SSCcUkTwaf8p12\r\nfcI2jS2KiHWXl3j+5mrDLJW48M16E7jQN0D+n7+2T/izpgxu3xt97hT2yEkA\r\nsxw2+IcrVIKdtEIopk+0biI/OM9k16vuL7UMDmkbrcIxCu/xJ8ZXOFeJEQMt\r\n0cMKRgEbzyDcj0slw1zQvLieXazU3ZRY2wTxQFEkYDYeWvvvQfxzJByJuyaj\r\nA77bUFsoDY531w+1UOp3IPKJel09T0ypcAsffumoFxw68BdgO+rrAVOqjBWX\r\nLQ5q6tKsFoDGalIsP6PBAVNIjpIYKc4JEXX0Ug7V7z7M1xpRgfTynPxqaqp7\r\n92/TfZA2DMQzq7yT8By/K5ctAMaRNbr8f6cnZjT3mubh9mvHpm6ChO3Qu6bl\r\n4SQZ0TWoIBOzJ5DSLfHzKDEBI+fqTDpO5ggHL1WUpDEsnkvvXN83o1EkcCuv\r\nXS4FBPJlNOL5XOfLG70o2u0BsWW50uiZ7H5hrptqdQEdTAYlrlYXIfkbSAzg\r\nHyr9krKzg7hdUNELv1dUJy+/1AWtnZknZxE=\r\n=p6dl\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.181_1656281002489_0.13007608374418234"},"_hasShrinkwrap":false},"1.1.75":{"name":"@leanup/cli","version":"1.1.75","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.41","@types/prettier":"2.6.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.75","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-pwhvUS13sqmS08+VieEZswmNMYHC5OBOmp6G+YCXwuTMnWmL9IrLuBD/fTUONQWSew7hT23DtMnMMgf5LBnLnQ==","shasum":"e5bbf7a47f2a29cb98233c2d59d26939f119d7c4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.75.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDzJz/jBGobihc3hbjAdqvfj/pJsSIgFLgYywUjN65npAiANjqJdxRNB1NL2JAT9tzozFlJOpoRdDy2rAsXARpg0kQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuNe2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqcIQ//Rauq1sbmDau7rUfwcf3B5iKBKEUGw0Ls8QGVPWG7tr11MTNC\r\nj9YutUOSKSny7HtcOOTV/NoXYmCU85uwc6b9HaJuMiHfEDUiiYw7btfdwJoe\r\ngI4DVzcXWtjtRmmw1ak57aOBKwcupbwdd991w3tIpXuy9a4n5vlktfEOZCkN\r\nwuYfOR2xsfb17qTyonwZnLLsMLR37nS3yVhW9EjXqVBZH0OU0pZH6CGsJa0n\r\nGC2orHCZUcvTC7SRBfWK8QwDZY9JOF652YSrVYr71/Vy5uFOYkeoDiLatjGL\r\nP674n6Kcrk02CE71P0+UrAY77hONdCePXKOytjPkQJqMrlN4hblUphR37tjY\r\nWMFPIaDKvafPyoY7aoG07hruZz78mjyIpmSqrcVKReaWsor0PMpkZAKGKh8t\r\nVCtEzV7CG83Hby4vrFslzX2R9gIE3vlVOCFWax2CAFiUpvYdXBHOCkLsK2fl\r\nKPpOzSQaPf7iPMZNZJkvPRH/NMr2UbJykhE6gPJZCCiELCCVd0+fh+XQPFFc\r\n+wa7PV6G8MNzrmiE+N414627CQ21zw9n7WSjvGDcFDBAzCDzpzXY3YWQT8sc\r\nKS3KihiFJ3njss1Y2AGU5gx1+tIWc6aOJzAAvi1sBZMGYrQmS2RAWmrD7crw\r\naxtbio3cKdSCRH9RIM9qThIKGuscbZ17jj0=\r\n=E7N/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.75_1656281014193_0.30282662376914504"},"_hasShrinkwrap":false},"2.0.0-rc.56":{"name":"@leanup/cli","version":"2.0.0-rc.56","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.0.0","@types/prettier":"2.6.3","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.56","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-2y0+Z23pDgbMfJ/SbPnYOzltIf4R5WemO/BGAtgCjBJf/WmP0jlX5MI3A0XFWfVAxFX6KcxNRobnu14asySGVA==","shasum":"dc3c7e294ab36e95ebbbf6d7f2ffc59238a5eed1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.56.tgz","fileCount":62,"unpackedSize":139770,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA8vJ97LEJnfeqx72M4SCLIrCbR1iJxhItVuLJslHxZ1AiAvMjinllzlNo8lZjcdq10/yjJm6QTN22TBTZeGSRyy1A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuNfoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrEGA/9HWE0vO9so4mSXgZ3HLxcuYK25+VnAE3eugcuSoiNBrH9poex\r\nLpNuNYJ/Fl85xGxMKlQ/k1nFAU8IC150PS2bAQxtK4c2rZ3noD1J9ZN93I9C\r\nglV6EEYkoQGDdNORKTk0p1n97EQmR0v3xudQLHOwsC0w0TSQF9zmTaJz8/jl\r\ns43pBmofjUczU6cadp88n+K+qidXaXNB+UF23lAODRnnIRPKmOMODXgMrNc/\r\nvnDNlUcH+HDiy8C7CVa6HiiAspkksD7/sDI7cPcdHGS4IZUl8c610laeQX++\r\nz6P8FzlNSH0F/IpfxQEgbw3DljEp7gpqoZANGkVCeNF5D2PlqXNLGHwxv0/X\r\n2pNHGUeB4tqWH1fFglCj8PZOsEOHuLVykZeiizhj5lRPzyytEOpN/B0jA4gS\r\nE11iAcJMWKepp+v6WPTN4m7ZwTiMC7yP+aKsHr911AfuVrwKGWSsTFD4kx/4\r\n/+v88dcv4AOZ1/9HXkynKnd8fwCFUfS8xGvcNQVmfrkteT0guJcqvYap4i2o\r\nMXY7eS89OdS/Cr6VQctyfb7dpxPLB1N8sYIwht6yYBW0+RuKlikqNG2NjnUo\r\nWPKkA5y7p6ai9DUjWzqEicl8l5DFMmXoLsq441+AcAiCP1NWEToft4wBckXp\r\nMTVXsOPXspkX2+VR1WJ4/kjo5JmJ9oa9OhM=\r\n=wRI5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.56_1656281064223_0.3003490229861343"},"_hasShrinkwrap":false},"1.2.44":{"name":"@leanup/cli","version":"1.2.44","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.41","@types/prettier":"2.6.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.44","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-xIfA5gPpStLbjS7jN9khkED0lzFyA6FC8QyS3A8HGqwNL7aK4Vvd7pyUSCD3hIFNvTB3aDqXnS982pt61EDEMw==","shasum":"d40df4e1aee44d4ba3bca1d766dfe070c8815ec6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.44.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTQ7WIGRQ3zdZA2dctbUmpGdmm9ZZd4geaSZBhNr4C7gIhAO/mRb+UsegCmhAlHaAXL5yYoIL1FMBjgwcjlOn6Dtc7"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuNfyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp3Ug//ZBDO2Kw59ToGaiAdEoOCX/04uyt44i3DTv0i6pGJWewklWkz\r\nEES1ZkJfsbl5dtpxjznSYYBtpjbxcgFwnLMF4keGCZA9TUdk8I5kBExDSv9e\r\nH9V7haLFswzRYSpXM+xZTp1Cx9BANTtMK66NZnMRO+FBxAQGehxHZZueGc/A\r\nLai+fBgk5hm7wXq1OnnMCw7KETmrHGXun6VCJFEcmo6KkqNU2Af+VSzTiKgE\r\nJXLR0O06y2hF7PX1iMFyz76smxxomKIesRkIY21IVLKOE9dm8Yhf/U87FlQr\r\ndRhGdPY6fDOHJ1yBSYLGh2g5YDYG2RtduWHusy5lpzkGwCv7CMKMRgqJsEA8\r\nXQN2MDg5on2gQ5VS//I8cOLxMPaXGYmODnMWFaTNVSKekgg35r3Z4/Bj3o7q\r\nnQw4uwuu+RAN1PJXTAwlNcCTqeH0LKEPHsL7sQJiF6T11fiF93a+LQO6pfFY\r\nCbVJsAc5Fk4ZTgKVqnCSiGc2H3id9mpfKIPG6byES4JWztmv+1FZAoE48zMj\r\nIX2RymoIP+2RD+jHJF4lAyHH5VWAJ0/qViNGXqzzEhf+dradoNzxBKTs0AZ6\r\nD6I0ZDAWCEc2U0QZIrN0EvBvT+pPw6JCKg5I45BTJF9x4aJSLE6wxZ9PzuDR\r\nLlkmby7lRwjLebpYYO2vRrbZA/XyE/f9LU8=\r\n=ZZ28\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.44_1656281074529_0.1234913613306241"},"_hasShrinkwrap":false},"1.3.21":{"name":"@leanup/cli","version":"1.3.21","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.6.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.21","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-FfmPSb0Ys8wfDN1ge85Oq3piGGU54UQuh2lE0mI7FRVw4jej+BFxRXqKUXhs3Ype5lD0tOKubN9QfW8DSUX7lA==","shasum":"238c0582dab33896e3ecb527106dd23e80dff447","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.21.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBBetSIhqatip/kQONN0E6nXln9xKq0wb9GWC2+yZ23GAiEArwfDkvADjOFncdxIEpRVX6rzPyvUgrc5CHwnfcLmQPI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiuNkGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr20g//TIS1VHaYOmEJVtg/GkNDTr/mmC2ZRvGmdtGngXP1+evd78+J\r\noI1kUBdPZjx09LWtBPNUd0/yluGStZUEXsJiRa9ezUSiVxMySYo9PFitbgfP\r\nwGbQ10uOqZPTM+FQFRJCnUdvdwl1W/R1FeBd3Cpwz6qGZMhry1VEGkX7a0tI\r\nu/x4zu3r2mUj8TncUCSETfOmtIlHtnVD6Hnk526no2gU8qnEl81KmyHXndIr\r\nb3irQjKfVtDucS+7sjxHtoWcUprOGs+xJ0SqYeTQJu26l8H3PFL8EV9BEtxv\r\n0IHjN6zja7ZbnJabIM7FSGI5zCGBMlMY2lm0WkBqFBdkgyosdIaab5YlZW6c\r\nD5VuqBNa9MMQiivZhuVGiTVj4SHO/yjewvIVWITAzwHrgoXO6H3rV0qHcPBG\r\nRpfLlPkktXOKyu1/uaUBiDMb0d53alfWq9wilmBMUpWQk2GNVHmnp0K41lGI\r\nYNLAX7uOagk0FT9wwOm4G8hpNzVBX0KxLix1saksJwPNl1iweRc8lYk/2Vrb\r\nRE/5SK3zbeEh4Km4sfUZxZWPx3RmYXVNRz/NHpv+8k2XDzTdK1p6/sngNY2k\r\nVXXoPkNGVNjd7EiSzzJzjimUOuz6tXLFbLw/OA2/TktNJh6vbTpSqNXU1CM7\r\nggMqwP+0WGvGE2RDov6G0iaBxvwWX9HYaXY=\r\n=0PSy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.21_1656281350799_0.9581634065640043"},"_hasShrinkwrap":false},"1.0.182":{"name":"@leanup/cli","version":"1.0.182","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.6","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.18.6","@babel/plugin-proposal-optional-chaining":"7.18.6","@babel/preset-env":"7.18.6","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.182","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.182","@leanup/cli-core-test":"1.0.182","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.53.0","sass-loader":"10.3.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.182","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-DktqTl20VlX3sUUDtkNKVL0UXUS7IPGFkGue/41aFuJkmA7JRp2Gl5UEzUIl+Yqb74T4ESescRCWUnbcDgPFBg==","shasum":"95eec26566d4e3be99cef99f8da05dbbff8a584f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.182.tgz","fileCount":64,"unpackedSize":152162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAmD2tgYmHqVK5qsEDwZZp0octHBUJVyYktLeVjkZC6nAiBqU+0p9YcR/TYj7KkPpFcuHRYx8LXcCQu45omeojQeuA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiu+/SACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpmqQ/5ACg5OZPEu1/PsMi+Gp+GmMhausaxk55sngbEe8w8JFzoLEPf\r\nr/NBxMD6ChPokNDKYiKlgWSEsXSunkENGeuBY7UH3uqGAT1nTC8NyyPUuc/i\r\nRVMaPedABbtmhQuAP5abw3Pi1Lmi4nSgTh5p0truytL4oU5k5Nri5bT21KxM\r\nnDBmxfylE1coaBnJZOjw52wmcf87mjJJVpJQnBhCj0WZbNXEeU2IyF4DisqU\r\nDVqABVJCNq9Mvlo8/2JZVIxvoymJp+qFT/pmL2VCOKp/6vTPUiBXktWbdjJj\r\ncAUswUVDwieESDC3VqycAi4zI5nmdAbygNNycV4/SdNeBmoqqHcCRrA/JmK5\r\n0guc0X1QREu610cYcZMokMJ9C57Lts3eNwbh//+puUEXy3Xdq1AHAP35MFC7\r\ne1Sb2ryosL8L+HjFdFOWUi3Hkm47eSP3EFKyvOYcYK+C3bulBq4dhkB7JppW\r\nP2XZ/ToDbmlmtfohDuEre2ztj82lEfM2nqRzEl3DoPKbcDb9Sa/pF1ubcm7a\r\nu1pYaVHbDp7LK/Qp0uYaIQf64dICCNavWjjF6nBhIZMkkGGMzlRErMPao/RX\r\nobAU6H9v7Ncb80rIxOEmwkkG/Lm8QO6R9ZTdV9OASJKlagM3Z7tW24AtgvwF\r\nUbL+4Ogzi6aP2e9shsoK9OMaUgKgvHTvr/s=\r\n=ur1m\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.182_1656483794292_0.4614764957838111"},"_hasShrinkwrap":false},"1.1.76":{"name":"@leanup/cli","version":"1.1.76","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.41","@types/prettier":"2.6.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.76","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-harTg8TqpYhofV9jsWBuncbZyWtResc1blaAh/EFgdd6IXXwq0vbVyADM+USXd9JuKFl3UhlM0EF/yELvDpYNA==","shasum":"a0c32b0c81aee6eda676cf5985adef96625819d7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.76.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDKmPhHrAb9pbwKEEk1XdpHx5TrwbwZ3MGCUaTEl16hTAiEA15Hf99FVbw4j/EEuEu/ght+T49CTpGAhKLQkQqcjjUE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiu/AFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqBGBAAiTZlyi6TEG9xALPt/na5cexz+dmQb00pEf8IRD9EQ2SkSrzu\r\ng4F9edDI36s6scReHLSU2pRrVpJCMjPRqcnnlHEGvv/03+AyutLMO/BNfRgW\r\ngfakIN4dWs5sMqeGFBwRD0tEvzR1rAuisLmS7eHkDXeBMmUEq4v2ltYa/FQF\r\ndpcV0VmY5IrsBW8PLDGsOMgQWSDb6MqZqJXjgtDl49cKCmwij9cXyLVntm+k\r\nE9ZwI1X8RU/IWvYAWlz1b7t3830DtBfb1+zWE5TJEt86lGE1EMFW6n7pEERZ\r\nnFmA6J66eEbQx40gun54J159ahtE3l2ftHhGFTJeJ52LYye1p6ET84kLFNdm\r\nbnqSkqr9Mt56EmiMhvgnjtn7wid486pRtvUtV5ZehD3POYzGi3Xi01Qj8eSG\r\nJjk87SUwWHmMZrBo9L3unlr5lhcIU93EIuAjdnsW6JUHfae0jJ6ptZpiJKHr\r\nHi1iiuTe1UB5L5YrzXdYFUF08cexByB2tYYgC7q5q2HSw1SdubKV7OavKpda\r\n+0ZZWuLjNjBsU6txWU76blC5EwCHdln2IJ2IIuWlYIw0EsFqz5eXUdLp11Le\r\nVwTx2bygVYZYvMGXRJ3AjZIhdojjpqNh1sg6V2OEW0HuLlqGHYGdhdg6XzZ1\r\ni5eCRvvxAeqyKvNSbSMiJ7C10pZiAZdr6DY=\r\n=2uQc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.76_1656483845768_0.8370860908062816"},"_hasShrinkwrap":false},"1.3.22":{"name":"@leanup/cli","version":"1.3.22","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.6.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.22","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-K6ZIVDnOILG02XKeGBXZZaw7kl9a+UGxQsRPBP1tHRM7CU9HUcwijvkgN3T27sE3PRDlFH4xHBMgweI4LnFn9Q==","shasum":"ca3f201dcd09b329f7077d75c057b889bdca77c8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.22.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDK6KKczbA9KecatH9CVtEtAbczvlT770nhcL+A+g7U2QIhAOtRFUgSjPHk8V23WsS0/aLnjSPoOInlYsAQE7AorksY"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiu/AWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpFxg//WJTHId5UuH4LCPQRedLwcouHb2plQ8zio5zksy5JOQW1Vv/T\r\nYYrMyswohDxy5qDKkSpNs1wcJj4wayqGXoeWoPqAwL4POcitq2vA93HEJNPV\r\n2XfSKLgrezlH0wR1dQb6apBvZQKKQ32IKvrjPeeAKOtiAcOZMwrbxAWSrs5Y\r\n67Nlen23O2nuqTLMjZ+Qdmqdelp6ZKiKZFgzpC7ZUo7c7uoCLFwCTGqxeR5a\r\nyKWZy4WsMGr39fW+/3pqeIkiTKrx3rFobFNqEIBqNAUGh0gcxyulAsEF9Y4k\r\nEF1wNg5wvL8Mz6HvXLLv0PuV26ejYG8Mp4uWaBtpzrPZJ7lu2fxA2UpMq5gK\r\nk1aFzVy/LhHWKker7UUJvafSazrLsJuD9pBFDarCqFMT6oI5ZXmQ+9RJT3hR\r\nTmpXREfCJ7ySZIj7TtvimvJ5/Fip/xb5jwYnM9kgbigACtzRQ4sdcD2kZaqF\r\nsr3RiZqY5NBV3/MZyiL4efYisNiqlCbbJWxr+vkUSvSS1uNYK8Gxo45g7/Yv\r\ngtEXcGJIeq4gAH/PYTzwVy9W+6JHqRhQb99FeodyhYz19vVaNPQs9YOHTTTh\r\nUFvQ7OBslUtYBTKZgHQQywMJwoAAQFdZyj0VZyLQnXNTP17e6vk9tbhwrCnG\r\nFGWOo58Zp0KmyUfFYQ4N234Bk9inKFibVfs=\r\n=yEoZ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.22_1656483862681_0.6311927825647219"},"_hasShrinkwrap":false},"1.2.45":{"name":"@leanup/cli","version":"1.2.45","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.41","@types/prettier":"2.6.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.45","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-recGkQzMoBSlTh6SpquEhYyTxlhMSbQc0XBmg5osu3S9WWarEMT1iuf7My05TP67Ef8fV6Wgn0fkQLWy/pXdtg==","shasum":"8bf6ccafc2c9ff5a5a0f435852d0996ca088bc7f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.45.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqpSI07E2aEwwPinYVzVvZrFNqSoxUpqurjyfdXShpXQIhAJ3ml6VGwdEJYpLxgT5LUTmqMJKri392WXzCtPhO0hfd"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiu/q1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrr7A/+NzSIkZ6FXVLOFQX/cFyKyX+GV1NxME9aKAkljHoJ5TtNvYjh\r\nzuOHU5EzfqQtp4y7fLvnembdNxgZa5D9ddT3pZdOYAZ0wrALp8442WD3Cr8g\r\neAPh9ueDMFhtmyPA1xnv3eQ9jWA2XSvL+Dxci2x6YxNmW2q4ccNJ3DPpYvcL\r\nBv6zi2uOqMtUFGLp+tkGctDpSKzD6zPOZGeBzqtDrnjohr+Lybn0+NVKHqnW\r\n2cIEgEBfTKEhWEbUJXTk+I4Yp0BP8hesYcrPOS/0QbawAVehFnD2nkAyYvcD\r\nQJP3N9QMwco/kSuu1cGW7sf5ghzt112l1xi4mo4atx7GpQqVhFJbYvmq3kky\r\n01sKg6Afi2uTtemb6CWhzLrGlDQRj5I5Yf7YPrC41gL/PEepVky18Erg+dt0\r\n+aN1Ruj/1p4A6VlZlkMpgCv636un9s1EaearhjrSGOwUNY8TlJoXaTBdh8WQ\r\npe71Crldiec/Fkb/kSr8OwgUxC29+sbf39HjQakP4djiiQnhDseV3cjFfpYg\r\ns4eQHK2SIZ+Q0kgZoqNZV9/frTAXHtEskJ5+yQlRsWaftQT/tprw3UEYHAhN\r\nvDhtnXOL9x+xZ4KpW9ERCQIWNhnCXug9nxmNJxphsv56qExReDpfi/E1Zlaw\r\nDTwm58GTlS0LG0dQhrrFuTxOFmPeWyWtAgg=\r\n=fzDx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.45_1656486581018_0.3357605886302444"},"_hasShrinkwrap":false},"2.0.0-rc.57":{"name":"@leanup/cli","version":"2.0.0-rc.57","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.0.0","@types/prettier":"2.6.3","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.57","_nodeVersion":"14.19.3","_npmVersion":"6.14.17","dist":{"integrity":"sha512-bP2qjx7t8xB7Q3O4zW8qFyM8OkCwFFEWWu7hFFmtDgNWCW+PkjEV2T09prqpYldN+yQp7/0QFK2+cdl/cst4Yw==","shasum":"e2b1dd8c142e14a305fa8b7ce27b807f83a025b2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.57.tgz","fileCount":62,"unpackedSize":139770,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCm28OdD6SCB41O325WeqVpXscG1GNrGWxnce6dH61LwAIhAPdfDdUq3BU5UJNTIgluvH6l9Mz/USPkW1NcfhPmx7Fn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiu/riACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpU2Q//VXtQkLMCbXMLy7R4wjf9wSyymzQQw8iXUzkDqaMNb1bVv0YF\r\ng3v+ih4R1aYG7VJMT6bJUlc2cL8hJDTTcj0tsEi5ppSWnypubZo8/rfnUQmg\r\nj+4aKTP3VByzHD4Ki6oGs6/Mju0TR913rJ0+u/lMonhdWnsY8PFkE+av1iPk\r\nQ85UOUDWrAXBxhgBf5H3a9FTkXzLsmgYvggMF4SmtZcjQo2I3WqwCVQ1rc5G\r\n4HUt6k/1xlMtAIH5Qf0g4WJck3if0j3cHtU3utKl2DeTDJHf1//xLxt2HzuF\r\nCVbl4ChFtpAdtuddZxQPlU6pRbGvSqCgCZCo6cB5bIgpFPieDH6uL7NDBiQR\r\nhqeF1VqCswN0mRb+rJ50h3z5LvQgdlu0H5dpA7NZy9DCqsZKnDu31mfVR19N\r\nPwbvOpULcSZYQu4kzvr892tj+6cAZsq2D85zIb5U5F3ybzkan1l3kCNjuOwb\r\nvFI8ITE06i3AOs53IE94TeyGQZfOAJwzSX3yI5mlxnGceOzogY9Y6TFtArBu\r\nAC6bVHXpSMVeKUUYkL6h2eTm9IPf84iuWlpDiIK+OpUaK7MgY11prCVteSBG\r\n8kOFpz1NS/2mOK8UUVVqLGCqHfCDt6r9bizCYirrCTsBmQthmINNR8yBI2rr\r\nik6EGD1YeDDob8is0TswJtG8JBW0panHkYU=\r\n=QIQ7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.57_1656486624812_0.2908427531887261"},"_hasShrinkwrap":false},"1.0.183":{"name":"@leanup/cli","version":"1.0.183","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.6","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.18.6","@babel/plugin-proposal-optional-chaining":"7.18.6","@babel/preset-env":"7.18.6","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.183","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.183","@leanup/cli-core-test":"1.0.183","autoprefixer":"10.4.7","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.53.0","sass-loader":"10.3.0","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.183","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-3mWWs5g7kco612sN6sAgcuCKR3/q8r3cpvgIssZU1TbqZC+fUEJdXxystLNxa4zdula0kT0+E0nNRAo7K41I4A==","shasum":"da086f9465da2d45b5e3f0c112b4b29d4b129066","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.183.tgz","fileCount":64,"unpackedSize":152162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGh9XHKRpiHeqRyhvsfVkAy6KWphYleGxqWsNgWoYJs/AiEAhHP8zY8WInZ8fPr2CpwiMDZnYBRCZFrFYhUQzCyo/8k="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0NXNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpfMA/9GM78+RWSGBBY9LL89BGQ5KBAiH1Gv6+A8vj3z1xdaPeNWnNV\r\np2ssz89MMaZ2LdlAq4GJCXCXFFO4Sr/dWNGySWSKxAQKkiIQfZu6QdXj/Nd9\r\nOvjGzLihOHRWZ5aW9p0WpiLsGHP1+QcT0VIrncPJZnXa70sq9an4TR0veBSW\r\n7vOiT6kfCwR62Qr1Z12mX6g+DrcbSIOO+O02zSh/mHcGkhsBauWfx20v6KjA\r\nVFqnAgrFVvPMyK5+W4HQQpyIJSvQGCXL/ci7FF1HJf9OpLNoFOfvSDOTMGdw\r\n8gJzRDriF7xbSVGEtv+U5Lmct6gLZgGuYgZXN3R3xcXI8tdbLho3eVljgXHj\r\n3LCF7D5GHgMWuIY3a9vFbFxv4Uq+GRpiHL8iyFDJbxXf3YmdbWQoLKMDWg2g\r\n/BKCJxTYH1uSY/PX/12IPxYvGeEFHEMGyaCI+ldKwvt4/W6z2cD/gbGlCfqj\r\nnt20NZFKTUY2v89RI9HtqWhhVc0ekVeiysf5+kkLkrd7Lf1m24YxHRpRh+Bl\r\n2X47FM2dnp3UGkoQuj5rggxQOurGKYReh6XiA3NwVS3cJU17VUvK3/iQrsMJ\r\naY+W95Otv7OsGaX+PDMu27lmjuIoKUESskqkf7DjQ7x6zIEg0BaucM7QKogh\r\nKnRAHEQG7T1hVWUb4TZ4PBdAm3hMhoppj2E=\r\n=VZi9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.183_1657853388818_0.9078477809943373"},"_hasShrinkwrap":false},"1.1.77":{"name":"@leanup/cli","version":"1.1.77","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.43","@types/prettier":"2.6.3","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.77","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-FftlY8vsDjhdz/esJXmcUMfpqgr2LHkAvOll0tvseP6W5H2X3MSg62JIEFAO2zK0OBWi3TTOCluLafnfMdxTNA==","shasum":"461581a3fb41f832f82ef46277f95c40635c98c3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.77.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFtSkoOcuXcyuRvoCBwY9y2yL8M1QZDhxcRpKs5OQcUUAiBxPtXu6IY0ZAXvAnazS4qZ/v3gxwUakPgZspXpE8yRFw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0NXnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqIKxAAhk47PbKayrARdeOWbSY1zQ5K5rXYyEtDrttzYafFj2+SuMjf\r\nGfLR6M46p/HPDG7fY6QOsNPsUpZcjdlt7OhfEZsHrQKqtm9BAi/+w9hi2qiI\r\nQ0ALbwuGYbnsIYX8s8heFCcdOWnHYNgBjGw8Jsz3atIBAYYrCUNgXwI2GSmG\r\nZj4zfeDgsrlq60GHfdQaJngdfsfwe+12kmL9nZunOXFIZ3xTabiwzgZHd2za\r\nmIcej9G2XyHH6ZduLx4EyAAeVBbs6rXeUfGj4/3GPtTj/9jZFCxlWk7H82se\r\nCVMQLKK2tmlkLUycg21GdURNpVBh+X9cznv7e/mv1AH5ctcRbfBhMQCiDhcx\r\nTZ6R4xcEBUncZfKh3/DKYNKPpfQftq6wexZjmtcIQiFf1+P/X0uCHpkQuWee\r\n9A5q2KmWJiGbyfKg6K1zfw0j2bwA0yDUOV6a0/cD0pibvG+Jha9XOXqBkQSy\r\nMlMNyRFPWc/xjWwRCIcQ6k0gxlcAGADP35AOqJrmWrsOnaFmNK4vG2HEsENX\r\nbxXof3mxhXQb536w6I7k4uqhKuricI2dJTNVev8GMmqnXPoE2viQjsG6HlZh\r\nJ9GbGLbmJx1e/vnbL8q3diIkIGExT1WDImDJb95HtI/lyE4XQkOpaK6JYo1L\r\nOvLbfc3Fsc4lp5m1+22mv/zTM472wD1WCCk=\r\n=syYR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.77_1657853414800_0.04419020741226509"},"_hasShrinkwrap":false},"2.0.0-rc.58":{"name":"@leanup/cli","version":"2.0.0-rc.58","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.0.2","@types/prettier":"2.6.3","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.58","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-JmkV8wz/1XOh96HcbKfoBx1kcvCO8vbUMBecuF3/NT88tDPvk2JSH3wK/tXzMxdzeG3kEfEHagfCAUDPaXpjog==","shasum":"8c3949e60948b92f1b721e291c1db262587e371e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.58.tgz","fileCount":62,"unpackedSize":139770,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBRbj3E6YKLmrhPukkwYzyIjwuN66FVZsjOfjjUGulUIAiAHTAXpwVm4CrIQINRiGahsBrx/CvdqNVtZyjLUL4z9yQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0NYqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFRQ//Xovkga5aMDqIiXu+xmKbdx/RxLjNqIe69SmxOiFRgKFI5YVw\r\nxq3/s5hc3HWP3ox/9UnxxykGG9mXyirTrLXHhlXYdC8KP12paez5D/XoMW70\r\nSjrKwngDxVsjrRHOZfnYAOf17oKoJbP0i3djGPsy2KlvQHepqmGi/B8hYaD9\r\ncb/LycngtMvjPJ/gXxQcKkc39FAJCxFGvvKFfwYdNFjalzEGa2G/7tZcidv8\r\nSKr9sz9Ps4HXThpODnNab1jMmZ6PGtuKaZ+c2hbzzcwed1F+zLW5/eelxvxS\r\ndFWpQFEByRDv28gnhhxodAfXb32LUgLsASWNuUhN77h9Xn23iB5CO6K5VWsp\r\nraW53Lli4q/sUC1cs2AwSlCPKOGHQoa5PS8QNS8vJ7ov1JAvdSzE1Qd2T0B8\r\nbQddcLHtPM3JjWLeruTFE6cAKwVxTPwZpDlAfifO4TqzgSPjOLEcCPFG3IGw\r\nohJXDIb9bGGeqYkGV3JpXmtMDG22nmgPMh+UP10ru0K99qrmN2JcjPsdy9bp\r\nloyDc0WoEyrA6CL8MYai+XOud+fdwkDoG+HGc57vVB7IQ0VP5MzKigxobCRz\r\nekIcsHemU34hpTOxrbsl08bZC5xvsW9ORFhp4FjYjBtGb1pMf6PyGFArcLGh\r\n0VoStDHp9gTQSmbX2PPLHeoySAkhT1cifEM=\r\n=jY5Y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.58_1657853482590_0.9265238620888536"},"_hasShrinkwrap":false},"1.3.23":{"name":"@leanup/cli","version":"1.3.23","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.6.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.23","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-NMptZnp3HjR6H43/njqblZLBfNuI/AlbqRkiBjMvhYeFW987slCsrYcYguJ9GsEtfwjO5Q2vuz45T0oQFBs4Ow==","shasum":"7e78e4470d3c44e71a5da5bf795a16b6ab6995c4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.23.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGVRUCaPyCXIMT8otHZiNKWnHzEXnr2w3Fz/jxuToIh0AiAsh7GO6nJo/Txxe8eia7PrtGUyIm6yeO3sCOvj2R+3jA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0NjJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZDA//YdSCRyjbeaF7hAncm27PAU3KtMZxTjfuWd0M2GcHkw4mNK4X\r\nkhlVKhlmwiH3ZW6CQTrDfGN49qGixSJX2Bgj/BM6QureI+yEklqQH9CXFVvZ\r\nt2zFFE9QXtychEvMFf0ms99AiyXr7DCJ8qXe5fTL5t4rPEa7b5g+0+20tn75\r\niKxFbvOT61xmi9WgGh3869CC4lf2W7ZObDZcvfRX9PwOU5W/7U+PnKM6IK0Q\r\n1dA8wCllcpPwR9XMKmfsV240+9SlF6zDflfww7b0zZZU0FOZWXKCYFSw61IJ\r\nzDDBTu/9BQ4BXz3gbBAt4qYox5fpHBzB5AAKl4jD0qqn8hHmoxfWdt5cD1oC\r\ncneKSAJjx51T6ZvHlFOpM6/yh6Mi4utJVHTD7m+GIAGq4F4oj6qHINZd0Zci\r\nITeZcty6JAWU7a3FgpJK3DW5xaIUnHOgEJyPil3yMEsoUh6jHSPiGHIjBQ7T\r\nnYLyIrYrFsN5BNXlOvgiOId3Pdq3UBSsDrCYjFThi1o4hg6kEmUtDo7X5QgQ\r\n7nhlH1ppUCVM0goARYHUnE0Ij1pcs/kCHRlchZBv3dV2xaZd/pdnqp0ukuAg\r\nxUeu0GkWYRnP1K/dsuJftMW4zELXGh9Hz9jGNBo/L+UHiO+KZsceqU9/6abf\r\nk6HLEdnNYq5qgvN7ierE8qmTVwV++lv8S7o=\r\n=YEnK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.23_1657854152763_0.14808616817762488"},"_hasShrinkwrap":false},"1.2.46":{"name":"@leanup/cli","version":"1.2.46","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.43","@types/prettier":"2.6.3","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.46","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Guj+ylz88LgB+fxZJL1R+pMaUqs6EjtZGYzlmFALpfE1vca/dxAXVP3TORLrWbxcAnjmc2UhWzu5L49ErPohFw==","shasum":"7adbe147761bf3852b63b58f291440e7dbce67b7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.46.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDOfk9n+h/lY7zFJEeTgfP5O4PiyvarhFhrXQkAa63saAiBSAzxbyqAgvZlxyBnnq+xFGgFvZjaGtY9PMBXnztqbSg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0NjlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqqQQ/9FEuyQVrLk9sA6E0xQ4N+VRf4wp2qMi8eUEeDEf6Kb6KZlhG0\r\nM54bRj3Lo0hM2lD0yuv6I73C8abQJxxOeUyLnG2ELZeGIYUfaqv4tIuDSQ2q\r\ndC9gS/hbrJ2on0GDkIR/MgF3/if2BTi+dG76ToNGdCpOq8zrrmL5Ue4hX9QN\r\ndVaye0mmgIRjjvsxJEreYa6D+7WM22kGJ3AzG6RCQ6rh2mQl8EgQKUONONvQ\r\nqD0TbQHmQ8KGSEoc5r2Rw1b9T4IJpwrH+023djYJBBQY0YgDt6u6Slw0kq5L\r\niAPWe7mU/SCe0GsarntErXwYBPswsUAfEqdQAi6wQzT2/r3h/XaoALjXCVkD\r\nercrb8czqIDf4x9PMlIX+c5a05eGIwY51Rp2WUX9bdNLwWIA+KHikhrrkanV\r\nD5Im0JEqNADNO287YkYqlo1irSSc6lntuOL35bhRxu1wqfxPQIW0GPsGTVSR\r\nEXSqfAI/6/bNngsUi8U2aUro4AeYC5SIRsHyzJwsvjaAn1EHVe1RkQ8aI2h0\r\nY+BF2g0L67QJRD/EIzWh40sEWZ2MAvMo+srdy1h2ZeE9nMtLt1w80Cb6E9Yt\r\n3rircsPq9Z8x8R95L56TNVoEvtqsVCd9rlOaGcOCe6gHTGcGhYBX+nNiWvKS\r\nSiNw1zNB31eKGUm68A4XZJq7pkuVXnKUgVI=\r\n=wTTY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.46_1657854181132_0.7702634483697834"},"_hasShrinkwrap":false},"2.0.0-rc.59":{"name":"@leanup/cli","version":"2.0.0-rc.59","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"5.0.1","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.0.6","@types/prettier":"2.6.3","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.59","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-BnUENd38QxbyMrYv0x3bJY+6faRvZ96WH/l3Xyt4ASmCUL9xPvWuyWf3bN4dNqtIcjXdk4jnlZCJA8YHEHEODQ==","shasum":"395e5565bdb7a34175f151f2440d8a82630396be","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.59.tgz","fileCount":62,"unpackedSize":139937,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpglxajWC7Kedau8+TWNUrEpv0iURfnY/nYAhOgrVnJwIgC5H8nj1Tl8l1ztZSaY0dtlO4XJK8SWez/I11Mz4deQ4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5JP/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrR2A/+MxSXRHgb1IjEja7gggpn1ovkcZ3o6k5kgm14TiRupn5Douq1\r\nZi0lZXlSw2eVVrrjnu/kVkGwFnk0b21PvoJS7YouX77LlVb5MVU/o5s3co7n\r\nZi8eEOQG45l8ZyHGbikZflthnJxDfXr13CsWke1yrHPsvpLEYCCaMDVXjR+U\r\nJFEm9cy8S5hdE8oyH8O7WNHEynLGj8UUjDewaeml6pk+Qg09d5X43Tb/mp8A\r\nSTN8BuvcA3nx8UrMES0kvnkoT4EDqId65UGen78iGHxLV3vuVT57UtCFQtdd\r\nLW1io/PxI7OKDnd6eFR9ehwCt/7MgUVg6OEQ/4y7hfbtgOKM9lmc8P3Sg+Ac\r\nLcR2+TIEFMhXRk+54kJpMDtGgvatHyeEKcsKcQpJnm1Fua0dJgVKfb4FxwAW\r\nkM5iwrK3E5AvjIamB12TBlqX22wepdp/8WgCpYOe/d76LwxAFrhOXMWIWn6b\r\n+45YqmkEcPoFEJireQymieHgy3mNtzFgsOxJMdkz1hRlrjKF5ehYcM/xw1ts\r\n2M7vHcobV0yeaHZlyrsDv/ZwRY8Dv5daMoBC0UeI1vDcM8UG3D9H+9KhBk4M\r\ntBS7PsqiBBWYTpYq/CSF2VhMdB0149B8069Gky8dnlGC/HDHOK+6TxWh5Y/e\r\nfYkgmirphgEjz/jMXlUWmuQetiL9AYblc/M=\r\n=5S4L\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.59_1659147262826_0.5253955997313806"},"_hasShrinkwrap":false},"1.0.184":{"name":"@leanup/cli","version":"1.0.184","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.9","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.18.9","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.18.9","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.184","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.184","@leanup/cli-core-test":"1.0.184","autoprefixer":"10.4.8","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.0","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.184","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-NSGFQbDqcR0omUaUIPLDqlC5u8Kg8ABuJuY+RQPVGt/SiMe1JqxJ+kWAWcG1yL0IF2AEhgjLWFIyw48VEpSBCw==","shasum":"daf9672a1ff52448ce5a72ddaf38a71c088fc10c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.184.tgz","fileCount":64,"unpackedSize":152162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF4iTTEvv+yZzGwbrunYz6DCPrCk6tKK6GVNpsO5b3h4AiEA5joFEzmEnLCbuUV0ZUyX6USQlblc4FUsRnrTpH8+KS0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5Jr1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp6AQ//fvuKADIa3mOMkXac1kvq0yAo51HzFxJkCm/x2f4hvPdh6zm5\r\n3XZpppNPj7e5POzi6GYzMh3+EqpTzXAMBqA+bUd9tYf5LrmrsawaNb78x80r\r\nDHx+w7UyYyj1JD0cNNS/0S+Ctx4YIygUaARLQWjhtywV9MgkADH5yAQvjLOi\r\nSYpFGqsZEM043mrcqYKO9PMW768DuPy4KGcXd/kUqn60b4rc2P0tXFGadiyb\r\nYaSRtaMjuqAB4mvVpV9kB2CwFyiONI+OljRCFGmsxmJVfUU39uNcphJlgc7Z\r\n51mC8PvoSKfQUqRBC/1paVFGAksD4zEbL7w9mr96Aieb49urhYshkwH0Yh82\r\nwya+h0TJ2vmASYVZtrAgIaUzPicfpwAFqgRdkcKfSRU0llWiwXVdIB/ggtuO\r\n+B2n6LeFf3bydZBKKzanDzNuHM7C/gY6Wxn8MPQWnBZRqO0E/69qKOx69lcR\r\nWFd0rDFWQ/1S6/KXXER6YLkHb5lmJhBLiYRXyGuyffTLiGPW9as2NH9E4ME1\r\nFuC4pTw81elBNpDCxmfoQnNsc9dufS6E5e9CE4URdhTadhwMsPOU7pWudFBg\r\noXmV22GWXhtPoARgi3dVSZ21jTNg5jKiXZ+a3l/lXkqFSSyIsBaVouI/UzuQ\r\nJJd522Atkck40X2EJwMVByQe6SkrrZ+oO08=\r\n=LrB8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.184_1659149045511_0.08415578474680419"},"_hasShrinkwrap":false},"1.1.78":{"name":"@leanup/cli","version":"1.1.78","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.46","@types/prettier":"2.6.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.78","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-z8s57w8sNpbYV8TDQlXdh0/O4ZsCfVN00FaNP8lPNwzzWXYMF4KWPEVoHvCP8OauFyjScCEk+aBZntFAyyYR7A==","shasum":"ff8e888040338a71be051764847182e41960b7f9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.78.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFMwlFzjphwF9Xj+CMTxgX6O9U6im0wB0gYsgjC1HMoXAiEA8U9DWebisyQt3Wm/pAZVjQvms0JtoRxX3wWDRsYNct0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5JsjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2Nw/+Ma7J7fSEj1HhnxOsXot9l6I9hzhF/Gb9smfsv63KzDCIl0tG\r\nLck03A6skv576FvwYoKIJFIIdS05he6+Ae8sjgIN6SQUpyyOt1rBb73Ewu5M\r\nYkOQ2rzgYA9dSsSRYJhs7xNv8tNWeotpuzIX9dkP7nA61sMaVFqbTlhUT4bJ\r\nWN+vcvT4mHMq8ntmDp0v3lvLU7dhdds7/oeZX6lxzKNdP/n41cBe6FNiYnnP\r\nG/55KHoUbOGY1TKZNqtyexAjbUT3qMLt2gn57uRlGnRAj+iDQvl4l1RWvRZV\r\nBqh6kaXXz28MRVPwCtFxPCut+pDSPr7AYPnnLV3+ln1xmwekbYVko0LRFdO5\r\np4VDVtYv2aJ38I9aTffopM3EEaed73v9YLvY4VDdQd8nLeHfTqjXjj/lUOEM\r\n6epbDpMnMfz9veRHPc4WaHPIVodPh8LaFMY6h8fBAtFAm0evfyJfWtJ9gyTu\r\n3M5haXckN5TTXZlhjQfaHwNXXQZ4IQaXR9mOxiYx9OASZJq4c1EwLHyQzKt4\r\npB3W2WLgZqaWgAs6uhmcnzWvR7GlHLl0drEQNVIkSxWqspswKtONxAljsKCS\r\nSP8uNEycHPWeq82yNG/uW6QxNGTqut8CL+dpcWPL+QLSBEiNF8ywRtTexOTh\r\ntGWoMkRXVqb9iW9uBufY9tbDVQY5Ratfjyg=\r\n=7rmy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.78_1659149091571_0.7700537175343884"},"_hasShrinkwrap":false},"1.3.24":{"name":"@leanup/cli","version":"1.3.24","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.6.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.24","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-V/DmhhL5LeFssdOA2nkQHQMRq3HBL5MiEvsvLKdvZvUDZgiQgPJGHJjsuWNPJhYASn29NpTxynRu+bi8JJs7zw==","shasum":"0802130ffba54974a299ea3c8871c7e9f80cfdc0","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.24.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGlq65bWsLo3HjaA5i0FwH6HI9cd8HC0ID1xJ64eDFT8AiBMFkAIlr2HFAF+NnygfZAWnHlgv93SKKTcTrDJDZhMGg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5JtuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmolPg/9F5nrKBVCxpp9PzLA5abAxa/7/Epf1WuGdEV4peDvZL6FduvM\r\nvcUoVwodmb387/H16NK90xSKx7RJm5oGy4XrJOWhFqN12K0IV7XcXJHItETN\r\nosNyu1cCyryD6SMkGMpqWY3DEQqmx3aqhjDGD4rsWMyDvAB/G23nJkXuzvAE\r\nnSuDB05ojv9fWQ93jP56tsZ8GIRUIxSmEEymWkx8w8dYESz7rKxw/5y/dOtk\r\nnX4nxyb+nux0FT3IOVEFt+uvunGB0ZO1V39Npz5XP90l/BBbANnNAmxpGVH7\r\nDHzg3lnLWedHJvGRm/FTdqS/wVGckQqFSrhC+fdDCuxkjqap8kJI9gbPUCV1\r\nG+MaF+2pZrZ5nZ3UuXSqNMWV/fiKvKyi5wCy0hQH7/pGQ66gKhmi+wGI9QQS\r\nRIE5vbPwuOZclZ7qf/cVy1Aky5eRH0WwNTKMLoUAUDxe8+MS27qEUecGyPuF\r\naBemFFMjZL/y0Y0AhE2OqWiaVCvvx5xVr6eVPiSy6ikit+i4/q3xVVFkUleT\r\nJeSYrqYL/G3XJSise/mw6tmNe/TFTYY6jcki0/ftVaaUo6JRfWIXlVI1fJs9\r\n94m1JshSRYKANEUBsbX3DGhHLI2bpc48MNBaV5hhUU1eqWQaSB3BF//+oVVR\r\nrNrQqvfUdXRH9FvoEPLWY/s0CsNVYwN55RE=\r\n=/NjJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.24_1659149166553_0.02118735448061826"},"_hasShrinkwrap":false},"1.2.47":{"name":"@leanup/cli","version":"1.2.47","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.46","@types/prettier":"2.6.4","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.47","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-dHwMYARTicUtfjh1CUpdQ4Nrs6rMRK9Dth6rNjcfPjxNnnadAoUx3m6m+CtBJBGCsk+yDUdubAZD1TkPOHGCuw==","shasum":"8e89fda83124417bba3ffe372a781a9837b2e5ce","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.47.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD168QiyYSs15T4pV2friDLxVcm7E+FUjODZQwDAExhfwIgZocyBcYfHQbyDhEIfzDA0JhC/Hy6C5JVcwVCVJWSPR0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5Jt3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqpnhAAg1PcYRiwLY2f6MRh+gvjdc8ti1iVIwkGBCfiuJJMEICUAT8W\r\nUJmCidl5esAzlkoSEi/8UIs7ihG0zJ1GRqCFljvzKgur3QKU8Nr+5BMvxR+Y\r\n87xV2Vvqg5asLn20A1RMKLEaOKZ/lvTmI4XaogPqiBt1rVRbkHyOg4k6cEP1\r\ntIMVxoDWxCgKXw/2bfRT163lfXYXkTObappm7f/OnyIqAUA+6ormUGw1bWHb\r\nllVsH7k4tDusuCi8IOcCTCN78AOr0Cvbt8cTrLPyh90SOj4+69EVkMsMyF14\r\nxWi76+W294SIfnATQXBxLWORfEuS7bAOu5bEQVE0EusQMkL1mxjHymtRS/N0\r\n+4AHVR0lE6xo+QrQmGKkPVqxAWjd8gs/v8kJg36P0/VSCwUYhG7z6Ch7x0a8\r\n2el7N3xreV/+xOTpEwS+FBoaw08f/WZTTtqXbX88BC4/PSZ5laes2TORWnH1\r\n93Rad+qDRHhbnmKAlkkj2c2w9T+odALgoXDKg5A058NB3e1RQZhx+JDKPHJQ\r\nwqq9hTus8sG3E8+T6fy/g73ScP793XKvY6X+8sjJxSPS654MdxdJeTJk8bPN\r\nj3SqvbQCqFZT/MQoQQgInqGfn1HbpfRqj0FvOlRvTKkKYC+WcWxrlVTM2NsI\r\ne+R9tnOGDoqmUXdAuvDQcyh2j8+UP59JNOk=\r\n=F7u2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.47_1659149175584_0.47163785333746233"},"_hasShrinkwrap":false},"2.0.0-rc.60":{"name":"@leanup/cli","version":"2.0.0-rc.60","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"5.0.1","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.6.2","@types/prettier":"2.6.4","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.60","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-OOOuSPPHmSE4++YIBE9DtBKO/eVtGamE/YYWmpMpx55s0rAS8jJWx8YdNZwKzAtTriqwR2QH2tDGO8HF6KA6Jg==","shasum":"a33327618523047a3a95bf72d95f56d221c30476","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.60.tgz","fileCount":62,"unpackedSize":139937,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDJC3UrKUFJrJuWwf2jGq2/Bz8ibpruunxej2AyWPqEmAiBbswcmbutp0AFtnsWhftEjYA8tZiy/YN3WYwKSyFZKDw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5JwfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoDjQ/+M9ozFyrmjKnZg0ySNyssPkKELM0R1S0ASFHx/r/XW6SzZ1Nk\r\n7aCSsTEFgG12hlaP+fORr2D/bLagI42m5YuMafhxdZf+hcMu5jq4xZQd0vIJ\r\nRQMrvNCn5UpnGNsxUQ6rf2tWJkxfHaweOudX7tORrKGdpgiJm3rAMw4tk2M1\r\nLax2VxjgpnGgbfKSsluyZNA66dNGtMdeYLW/M0/S+d5uxOMcFyTr21J+4VKu\r\nLnGW4l+jXqYBc5WyU8VKOjPC2LwEpcZFHRS5OGyBXWfhPEKVk2/bWBTSas6x\r\nmzLxTpPy8ve61uxHFz7H8HfDXvvzmE6PB/DAZyh+IkAj/Ues5e+FNu5BkhP9\r\nZAcaiIOfIBznF6XIZei0048yxsB5HbbMvHflOKdm8ws3XlzGDc2xl6+SdLNj\r\netvF5NaG9Ch9/Xs8qqUti5Q4TgQpEr0CsdQdfBW3Nu2tWWlwyklWgt1KYAiA\r\nl66MJqAmk8oygWq6FZOam43P4eMjc/dAc6xz4ap1/cnhMvxT77yVNl6DM6zD\r\nn/gO5jE4qQG5GguvxgnLcKXAOhlOTCCRKAA+bW2KrJe5fTMpyWIhoQMI7D7S\r\n2awZAzc/9bpsTaciCUBKo6dcqX700GKsVASZVK03lhIG2J7QlSD82/6kWIug\r\ncZ/Lbhk53a3ZAQPMZFJXUtcZAoHbmCL7cmA=\r\n=kNpR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.60_1659149342889_0.057707861938290916"},"_hasShrinkwrap":false},"2.0.0-rc.61":{"name":"@leanup/cli","version":"2.0.0-rc.61","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.6.2","@types/prettier":"2.6.4","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.61","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-wFZzXBZL/OQSM+vybFV6xjbkcaX2JPXl2igoN4cHnDy5zkHvlrVXnepMXWE8dU+7+4Z6udXO6sVciUP33Bt4tw==","shasum":"6c143b6c9fe6d929e790f905df6cbad13b39f4d9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.61.tgz","fileCount":62,"unpackedSize":139765,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWPLNLcgQdeUqOLKuBLe0J5LXI2h7LzSzRGtsu3TOM0wIgcv0itBEuDT0vekU89EMKputuiE7gjYmi7o46yPRJxag="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5fqGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrwdA/+N4hyfluCdedzwcyBcP1elewaIbrExWLTkI8sNjA/QFpLlfjF\r\n9G4rUo8RlA5aBkrQ8Q9YwsbvdQ57VsL7g9IUCX0gL/i2FrfNMSjOEt0pq0OQ\r\nQ5VhPKv8aeBendDq3s8gxaldjBM2PCKrp/Pldvtr2dx+LrdcjcUg2yWTVOCV\r\n0IYVjARD8mohdVuifiRitgJjAm2sn8T+MBwWC6sOxJL7ok4AhG6tBYEfG1PD\r\n8kTkwk3D4tFBaDuWRcxQhNa6wR+EoLWrSo/Pz3aNR2AKaJAPK5v/eak5cwff\r\nSjVs7ZwIxbqoHBO4udJTf/FEj7bFXPoqk6VK03zAx4mDWaSt6Asv5LsHajL0\r\nEk6Iwz6ba0kilDymmRrG7MTZTqgJAQ3UlwHO8Q2o76isXn3p/8dcy0UrIFCj\r\n23wKSb0vu6ZKHZyWd6QF5tuLDNpLHEn8Bzj6dfaXxBXDoWsGR8QdsqPy9wal\r\nlAxN5NOtzplxdb1QjDjASdMRlQzEyGVLG7x00Ma4B5k2H82Y2/vHC8axEmJt\r\nRVu+eokLXVLuAOhBrInZHsdvjvJbiHfcr36hoA6hz0f4kvbTECgCr2bhqMp2\r\nWbPpWR+JZN1wdFx2tBZUiw83Exty4zU2nWRYtbvifqOY1Y5ztaAZP2vDl8LJ\r\n0iDORqkYwf9gpgTV02ecI2hyBYWZcse5VGU=\r\n=XpTu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.61_1659239046388_0.9201116650912418"},"_hasShrinkwrap":false},"1.3.25":{"name":"@leanup/cli","version":"1.3.25","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.6.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.25","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-iH98WWyOB6XgXMPjcla8udNJ8d06TRTPoAWuP80of5oQeQ41rzf0xzelsR6cH1wAO3icUh3vAUV/w9AzdHj18g==","shasum":"edd63bd6d1068e7a7577b069b4c4e0e9a1eb93f6","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.25.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBj0WZJ9nHe3K4PLYcdU+bemDn+sJ+kR/JiwYtHKn2IwAiEA6V7rlXWkj4p/JLVAI28sb/3ocKT+o0V0FnYNLpXHkmg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5gCaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJZBAAlw6WfUGzdQhfT7nzSlfwUi4sMHpPny7k6my/biofqlm217gA\r\nRFOeS1DegxOgrdA/hzuwpKoo6JDXyfdZznI12DMgN0DiLbgarUO8ZNMs41Om\r\nUV+sTiR7M3zaEqLP9kDR5qBsoUHXQ1gHD5bjOiSOPi/a16jOoPOfsxb17JKg\r\nFbXzyLfxOBRXkJaNivJvaERvs/VO/Bp/fHjEqqpkMdQkMAxDj0yiFrvmjITj\r\n++0qI3DWa+hwDPB50a+K5zNlZjrp5NRTq63DmEBKN2NtD3p2B1IQzXktm/XX\r\nXz4D13CJuXWrFrKJ31W/JAvqweiWSvFynC9HjjOGTiHAjxwAjqem9xty9UM5\r\nCiXprpSA3tn/IDt1mSKt4ClRUorIz2WoRpnKRuwaHVVXnk4XOkjVT5JA3Gii\r\nh+mw18r0T6VgDBBcjmTrF26Er4k8XDIpW7Dj+pBasKVdMdnsvwNYOblcQxPa\r\nDQ7NIxlgLuEvtqKux+zY3y57LilHXS8ggvDoYR8zfn6q2UTZKJwQ8WGAd+tc\r\nfI+EsO7TITKhR8cflHxP5x1M2ox09In0Ud8ufd2kOzqyTeR5DShuS4Mvzkdd\r\ncK5p+UjdW2yrdoB8Yztz2DKIXEx9xOiCt9xsbxpKkAEBAbvoV6FJMPkHiYhI\r\namfDqJEjtbs1xjViFgHUk/6kfLKHVoBbXaU=\r\n=B4n6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.25_1659240602380_0.9016172281589974"},"_hasShrinkwrap":false},"2.0.0-rc.62":{"name":"@leanup/cli","version":"2.0.0-rc.62","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.6.2","@types/prettier":"2.6.4","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.62","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-YnBhCRVcnMZH7F/sEJsUqCBTRh+ds0PWJVozsXE2MiUcX7SLbqgIzn+3uwHntaZ+rSCNGXxgGrAMGWXDX1ayBQ==","shasum":"ef5d920834a36b5884cb34017dbac2fd6fd8ea71","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.62.tgz","fileCount":63,"unpackedSize":139811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZGJ+WKYMaizuz3LoI6VzoZQYQIF53M/4xPGuaBHogngIhAKe/r5Ya8xq1HUIkdOO8tFjrdSNATw66AaMo9cZYjlYn"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5gCmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrk2RAAhJbX9twcAfIJud5Vc0HUlui2I1sGuQXk9h3ShUMhXwxCIzV2\r\ntesvRapqjOZmBqhHHJRk+oyByXqAdvOPW/NPrRheE0YQO7tmLCnD0UJRD9i2\r\nnvlq5nyqVH6hGFE+PnnR8eITggExvjMfVDyLBpqSJzwxCqCd9AsZUhee6Uwp\r\nZX7ZTO262LJqqnqO15Ww7CdmJXFUpsR/dMPk8+i5FQbAmMfav4O5Ppi0K15y\r\nuIcNtMkDwxfTohU1CdOnHO5PULWDVhWtuREEr4sObxEeQe8xVWUKC8RBdJmg\r\nmnolCL9NEJFq7sRIOB8tEvc027fe1omCAevIbqDpG5pX7vQgnPDv3b+lccCY\r\nUTeQITGH5g9aG2tF32/Ak5Zg6u3NmnKxMH5dRZQ2elqZ15wovmwwlgAahPBm\r\nPQjgqCYoKb3cRHHuTbikSiTiZtDrhOZPwHKKuBpDJEm3lMM5MJcLtwqLZ5jp\r\nhVYreINchUEC5nevdfiq9gRpgdjWRFIk+oH2Bbz7NN2UjPlIhg5SPePVzPbk\r\nQ3PegYLEhuxcez92KsjGJEcdAYgb2XAvYVgZcQ7cwUzNKmeCG3lNgRyvrQSb\r\nGsN1EEP6SWHF6rVhN/VAXkwee3TyXIbt/dU7cPIKf/j9/IVUKRbH1YgS1DAN\r\n/Fj1ZkURQdWBdKBwQQnpDubm/ltP1nm8na0=\r\n=Mj1g\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.62_1659240614048_0.6813739644151269"},"_hasShrinkwrap":false},"1.0.185":{"name":"@leanup/cli","version":"1.0.185","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.9","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.18.9","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.18.9","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.184","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.184","@leanup/cli-core-test":"1.0.184","autoprefixer":"10.4.8","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.0","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.185","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-6HwS+uCTJS43XBInQYe7p9so8Cqd63dkhfVwSFaExoKwf5Idnxp0xbTInKV0OYKg9FNvUdR9CBxyw9gDngh33A==","shasum":"588e5374731e259ecbbcd86627ca876238953f4e","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.185.tgz","fileCount":64,"unpackedSize":152162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCHxDLL4fkbcGiAqSr8uiEhhMZjsMpv34/ZdWuz3asmCcCIQCgjQR5TUVk8kKct/Ysx1tl4PG1bVoyGfAgr1uJw0G75A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5oT5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWaw//eRqcLqnSKfErXL59X5oSLEL9APcx1+9BRnJA9A3LJhq9EOyf\r\nY/5Hp7gZMGLy4cQRjuaRBe5lxmVUNKUyFUgUG3cWo4lGi1ZxN7JLe5OSgGvA\r\noUETtpu943DYiF1fv/pzEhRWJlr4Rr3Tzj44EWSj8Eq1SwE4jIne4j28CyMY\r\nbLizbjLiv4eh2oNgaZcdoXBmulKnrJFf5UJWW58VYo4IIK2aS7bXyQQwUotL\r\nJ4356Ua3YWOzm/nBZEh0OuCuDxeviEJgPk4PlFH4WrZOZcHH9+h9pjBg7r0j\r\nzNG2Q5s7jNj+MsgCWliuiFqO8Vu2jmHCJ3NtVCk/NvGpT8gGlLrXezFaRt5j\r\nAHe8UnEeDiTsANZyPQ/MOHVzb2qL1LAmuVh55yDq6lBwUqfgvEO9C7Fnrazx\r\nYiyzPasjYmAOpgOMhku+2lcKM2wS8wGVfijH4UaRcyJjFM/cw+/18un2FQ1/\r\n+vFrLM92QJXkYNLE2Q3BOhMzQiye3eF30v8ZujPqSx5zPNglFzntgWWoesLj\r\n9mQKl/Ui6LQasM/kAEiB9DAHrwV1KoAuqTbziTlSIWOrWgA0mcKI+iLomv8M\r\nFxBUo5rmnkbVfAfaewn+4g4CEevncNQy+qGMPmh4GowzrGIln9BJ+APAqVAv\r\nB6zSEw2Xesw0wMraWmX+t7/62M8C1O4Dypg=\r\n=VOe0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.185_1659274489271_0.9645583635413626"},"_hasShrinkwrap":false},"1.1.79":{"name":"@leanup/cli","version":"1.1.79","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.47","@types/prettier":"2.6.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.79","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-95nXK9MnIUKkwFyZ/TfpRS4EUhoUz0q4la5v7aaCXi+013d7zwfjLC5l/3FIs3KC3VdvRYOxHnCbJmj5oCHk0g==","shasum":"82dfb88b461568c0b0155c0cfe38cf6ea7a1ee68","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.79.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1p5vTTPNQLmdldnEGY1gFNzAK4EiToWvGolY/6B248QIgP/igteSA4xI+lYF8lc0BQQK9gqyqTrdNM8XW170cjAQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5oUdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9yA//RXSBWkYUZoIrMHZ3Gz7X1zEVmuF+QNCE/AJzf4T4wEh1eHlp\r\nc67H7C8zuwyxLlNGxiHMRDChKA/0axMp+Jn14oRgy5ZCBNpKIpO41xm9SYrj\r\nKBuLDLBge2/clxu8R+Qu1YZprR4ae+8/62xfC9nUh25ol0MQ20jKhLJOg39e\r\n7SJjCFVE70ACSF5GHntw8+9aqlXSCOrN8ucqlSHxcxGKXnIHL0XeXvrdJfGG\r\ne2hY/RgNk7Dvfni0wz5fBX5dwk7BY3GsXRVeD49b+YsLNLLo57pN37+wpb4T\r\nGuzrFXwB4YYTqRHmScwkIGHGd9/fRu6ULKkfFrhNbvzOr5q7fxpKeWaN3vJp\r\nOpWeKH5NPAV9CdavbVYjZWByT3xVOhMVUvf+bUba2LD78Q9EE2El/yhr2qb8\r\n7QCVZFiX/ou0SuzM3Til2hbiLDqslDFaUakJPkr/FzS+JT7oPTkleeK1oSDl\r\nIcRdoPS4cstTReRSJLuiO8mxPIrjzQcRZhM+ZvzDLpFQJNIp83sQAxn75lRp\r\nYMo/nuNxFTfOHe4NLIwbU4sCJ0Lb3ejZMcctxiTKInjbZ5B8ZETXe75uihZK\r\nvaPwx2oLjOT2sFEi17u/9JaKVV6QFXXIvtU8L2AV9RyzPyr+35KC+zkEDF/n\r\nAX7OO3KhWPbyYjYC7Q4XhGuRXGAIdqM4ZxE=\r\n=JZUQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.79_1659274525548_0.37852182134891255"},"_hasShrinkwrap":false},"2.0.0-rc.63":{"name":"@leanup/cli","version":"2.0.0-rc.63","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.6.2","@types/prettier":"2.6.4","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.63","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-p+ilJck1b9KtpnBaZzBm32/lDTfD4fe+1f4590MHARt34FBgI8JK3kgnUg4X9b3TRWUlb8af7Hd08/a3KGV3jw==","shasum":"3d45f1c8c528cc9d4dbc00026b1466eab4b65d52","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.63.tgz","fileCount":63,"unpackedSize":139811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKrIm+6sZx9vQeVZ064VDGhWi19dV3uehKT4Qce1OZoAIhAMGqrXv12ZyXkrkidfMb49loS2EvgMnpu/1hL7LvR2zh"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5oVUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/5Q//UTzg1F741tZxLMyStJwDEZMEU0GFDMkvllZ+iAl3H4KSgIeb\r\nD/w5+kFk3M/dUt4uxJDwVXElXEMR7aQftPA6U3oHPEdGCSmTlvaXDToFXOSH\r\nnFkgzdvQuOGj7Dab04V//UJwfrxpLmf5LfaSLKKfSnUhYWnG00nID60N8DLx\r\nP5PJiJgWvaOKwgim7Oj4dlMDHktufN91lJYJNDp4P04I+3CQJKtyKHq1fWfw\r\nrlRXRC+kebRNAyVLbwOj2hkO0zhdx38jdcDRy0ywa3kSv5tOFBUs6MNLT0gw\r\nAsRyVqfr1dTXkZjBm4WNO3GB5j4PFv0kJAGjLzovwgLerFZ8I/Y/g/2AGHU6\r\n6LEGMab2wx+GzUtXZKG671pfaeTjtMwt4C5D+vPPsmBt7mLUzZNtEvuQHp+l\r\nw5qtewoZ89bID56OtxYYwqHfleBMWaURCr83Zx8Ox17iBYPABon79ajXuPDh\r\n3TjE/sQfvGF5ugbWuvLuqFXgM10YPeUqWoFAGOvkQre3XBs6e3G463YkthiQ\r\nSMAAXVlSU02Qk5JkTxZuCLWTXYR5WzMwvxhbaHQ7DrwxJqLzN62iK5ciJtg4\r\nQaolfsuuqLGzJOmC3yPEASZ7M3+wWRTg+g54xp+VOkFV0HR/d5bJdtYav3ph\r\n/FBbE+CnF9Pn05dDBEb6zVj0qeQ2k0xtnDo=\r\n=Po52\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.63_1659274580165_0.9437352155441656"},"_hasShrinkwrap":false},"1.2.48":{"name":"@leanup/cli","version":"1.2.48","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.47","@types/prettier":"2.6.4","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.48","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-6vShXQJigFVZJ6PNz68q02mlBfKVxEB1j7eXiCGF411C+hNPH2U0ckIgUO5WOFEVe8hA4WQgW+rywuellHXwpg==","shasum":"b0cc111d0b4f7ff01711d0062c7c6a49bc93bb37","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.48.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFTtXJaJRuSmy9yfpTgOE0L/Hq3r3NIOt4rfp1hWCyEwIgCeweSaqkjOOcGt0eXY5/GRKWyzSlW0KN3mjqN/1b4kw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5oV5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMoA/9GLQCgj2JcSfA9dMFBfrByym9jEySztQRsUaK2gLqoKFTp2jH\r\nYCRJUZeKekAabclidhtPBugMf5oLS7s9KaVCxBwQz2Fb7ynS2bj4PyE3lHpb\r\nFE9SxgqPEnr7nE806fZFgbM6FAvmED+CLtAfQbhdTHCii2A3JhKbuvIRp1BD\r\n/GP0DZGAZ4q1trastBFP5J0I7OsNEpcK3oaR3zIcyrKOnMmWEvTNApLjKPQA\r\nrG1pPM9ML9pewne9eeIygTSWTMEwQ5fZ9Q58UCfwnh8QgS+MrOVUbfsOGwKZ\r\nF+T4m12uqdDG2acl3VArrGhYDtbaHNp40pbsAKrIWn2xIifZyzQIYNkvsYTs\r\ndFTLZ3bIzXrByFix35cG0pzgn453z3QMhd5Wm+N+5eanSc7v3MRAOovZAm+k\r\nQgYQh0S89Ta3ftALxkL9yaFVlRRzuCIHo4HVWDzMFNd4NEW3HzPZJjSyTFyP\r\n3lOe2a32319NG+eFbzMU3YyQtJPQ/W4KeHH+iBCHex1fOhnFsUMZMz7l9yiB\r\nzG5NyHKm+tpB9IPHBkk3KBrPqsZfI+H1bbmg+BqQGpGsJ6MhEy3Owp12yf05\r\nz6+4veyo3tsQwP8SxV1NZziIv6b7WvpVivSQha9Z17q4YxWXhpdLd+dySVDD\r\n1Z9nEhUBZo9OmfJRraWrFXzWRYGtyZhWdCI=\r\n=4S36\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.48_1659274617486_0.7416644250489621"},"_hasShrinkwrap":false},"1.3.26":{"name":"@leanup/cli","version":"1.3.26","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.6.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.26","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-urzMk1YVXW2B6wOEUdfu1k9bvqnl3l2aMhF223ZllUJmWA8S7J+bldsz000BKB1ZcCB3aza+j0WKLZ28eG3dyw==","shasum":"21f0799c97fc19c6f61b4ac3dc0a6889b368a061","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.26.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICISeQikII0AI10mcsxHAel2EO2703DW4+rrHb4OqDrUAiBGN9lzw8LRXEcT+NB53Z2r2nOWFzjjWwsbJbbKRyWikw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5ofBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrUlg/+Ldc/a3qTblvGooiN//XE32F6F1JyEJRM8cDNR8E54SRpQtC8\r\nlp4JfCpcNZZK5j+U8F4OakIvZImi8xVoiGV0izUhcfiTXI7QRXqjHcIU69YR\r\nxtsjQpmU0O4AwmK9EBnWKHPkSxu2U8BZQ5+2XDmERuYFz5vTKIpbY6tEyJNW\r\nmm7yYfIEASBOwdzliPjF7E8H6oARTxcKseLCGFCCG7u9tBjtV7QnZapR9dbn\r\n4KskHMjW1eSPXGpa6Tgg7ofyvznJICSUW/nf135D2k5fsxJg8aDyu3frkDZK\r\nXNO3GXLV0+dpDP/G5mXwh8oKbmLJ93x+5oXndU3bNULUIO0WwS1CyS3YxGKl\r\ncwGgZ8Yey60tmIC0Mfx7tLUTIGYskQDOYlJlKo7MBCn4Lml0Ovjddr+tNa9r\r\nWawdUJe9snagTr02hnj416swESzcgClMX5OQGT1PhFLwxcR8yaeZ+6dfySQw\r\nLW/jfO4Hh4pxbNn2koN6qXKgDgyq4L4IGYl0l3ZK6g2f8RpcpwEON2VxSwMs\r\ntQmGZ1uyQDozPz91aRrAwvGR5T3Jsu3Mi1JscuO7hvE2yUdJ2AIcuMcxIYKe\r\nSs/FoSAzxghOURVcu767UjVdbYA+vuZ77RhXqL6jmYWe+jM/SrP0qnTZ2DXK\r\nOT5RooNAPOK9ZxWJ/c5eitc1All/+So3hW4=\r\n=iQU4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.26_1659275201423_0.5316008261334999"},"_hasShrinkwrap":false},"2.0.0-rc.64":{"name":"@leanup/cli","version":"2.0.0-rc.64","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.6.3","@types/prettier":"2.6.4","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.64","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-F43+tp059sV83zrTcfE3BwbzUgFCrf8NbA29Mwdant8ZMtQBqisFCsiuYrXatnJWmkNzz54lFxWNkqYA10bK/Q==","shasum":"bf4b15ca3c994eeb272606c13157bfab225a6187","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.64.tgz","fileCount":63,"unpackedSize":139811,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBu1IKmsBEcBiy7oOsfe6wQXmzLw4DH9K94CYWSAu/d6AiEAjtEX4j4/8bxZ+NRfbc9p2lt5o7QlzHJWzWoEU7NlFw4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5zLUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqN3g//ZxHKiIGOpdqJy9RGrw5SqYjVctpuO2cWmHB0e3j3JMA2/mf3\r\n44TclyWa0LmVHAi+Ch+/qFH2p6jRnnTNVZTudwP8lWFR9WKLvSL7mk06xn8v\r\n/p+yc4SbAzEnGET0PwG7Lm5NCmqP66ZrHZuX60/fAnrIZIew3lIW1jjoJCfN\r\nE3Siyp9VeNj2MhoD3Kr6fL0xWV6jBWr1CvYqlOoUQQLsgcKXs7yApbRObqOu\r\nTzrfqoxpzuRBnl+zoINBIb9LN0wV2QUFFPyI/fqK4R2xDVwzGE7Kqlcy7G5a\r\nO9LCtwtG8eLBg1M9owdktI5+nVZO/5CAR5sNMmrQKuICa9HU1txvdRC1Q6uS\r\ngZwNkcMCu/7Vn14D56/SLsVUyKtfwkPwBeACRAC5yEJEW4FmYKVnHM6a8k9x\r\nGXf2K8qipVUZmoquEInv3xfHIsymMeznZWqL2XLtaxTDKRXRqp8RtrUJtIA0\r\nfx7IdCKiBbLEZLxNxJpX/R9t3u6I14H1SCuyqt+RYtRu+B8zFvDnw6+i+JWd\r\nsUnQDvRQpb9vNizivJwE48fYdNUHdk5XWccPeylwPmJeuHc0cKF6i1QDFwmE\r\nm5bYEiOtkDI1MxSbpykWNQVpz1DkVcpJMeNO2KHlKd+siR3V4k2vqXxxTckx\r\nPOqdZqUQ4awnobuHWAIjK83Ps2Ybf+lKzvE=\r\n=gBRM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.64_1659318996096_0.041385565420959836"},"_hasShrinkwrap":false},"1.1.81":{"name":"@leanup/cli","version":"1.1.81","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.47","@types/prettier":"2.6.4","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.81","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-IqLFh8rXv5InKWpBazkulhuUszT0lgS08xSkKbeXH2Fij63fIXAQL82n1kZx3oPB7FnsbAMgOpuBEUga4i+rJw==","shasum":"5e5e50a6af0e05c526088f2b7c9ce4be4e1b0645","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.81.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCV7uoOOk8mWWrM1B5+6RQRiyBEYTV+6vQjZqO2onjb+QIgd3YJzf6AK8CEuWBYBiZzu+/M/ioTjJdF0RCRT9elphQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8JPDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqKlw//cPNcrvJ9EfvlVVjNnj45o+5caxgNYHLm7wb52iok1KlZq4CH\r\nDLuSMxlyjKgDrrqAHTgFcfzwcs4SMBM4N/QAYZw8YHXqELQ9+qp8OFTzezKh\r\n+FcERk3rBefk72BXdRhvziA8kISXaE20wI3CFUOfTh4EOcdqjx/nVmcinL3L\r\nDzTyd8rkx1ggWp72lOzvyQNB1AgSkOsQcVR5PmY952C8hKthr7F2SrXnEfkq\r\n8aufxSNaohE84Y+RSoyxJmL0NAF5yLEpcr5bmynfSu5LzI0++4mb3FIfpy3h\r\noqG2NQ+n0IREgQiJe+J7vMHFNjcIcxYnIjQgUYKk4PlMKeg9HuYurzEfL8rf\r\nxQbEcK7Lx8h6GEsOE6Yf9PnIy+OwafWskmLTVst1Wdj3oP8Tds2V7hX92Rw2\r\nFQ8nch4yhaQ+jPnFX7YqzWP+JbmtZ9W/3emNZW7Qx0TDGTIDbR4gXe0UtCAD\r\nsIR98eI4eTERSDhMFj5D1POsLwFSDJaJwkMjebiBF5yW2C12NNUpVSCrG7ek\r\nlnIwMLyxOYbMnZ+kJ53iCcSHjlfph61PHBSuXLyerdNFBCM+DKD8cMqQMONn\r\nxpjqOY4zf8JwEpHMI+FQ/M5OHjnNcQsA61vyZ0OVTIEr8zXxFlwF9cYYy/Zg\r\nYD5NByt/Mc4Vs5LCKhkqNFml09oP14wqr+M=\r\n=CC9X\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.81_1659933635182_0.9643646949555194"},"_hasShrinkwrap":false},"2.0.0-rc.65":{"name":"@leanup/cli","version":"2.0.0-rc.65","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.6.3","@types/prettier":"2.6.4","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.65","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Qvc+4KwH+gGXv+qYaoDld0nItzRAHklKh9mJpnECdo66emgJ9JD6HlpC06xb1xmpzDMVwIEGwvCIFJMAPRYGuA==","shasum":"d154dea1b8467d32218614d0234af59f390689f5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.65.tgz","fileCount":64,"unpackedSize":140119,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDw/9qiyL2tLX5bjAj087Q8qivXFmXTR3UmvY4BCZoWFQIgNeXph9t1YkRi5tQ6UZUmNWheYA+7EpSF6KccDmcJueE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8JPdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrbsw//W61vfQeWb1OIk/Bz8jcu0B36p1ufz9GhGE0QBCfq82zWDY2B\r\nLZsNDx8qEn64fhKx/HPRxzAw9f4nbMKVppq7Re2ewLYUCuLq75OunTIP0pVj\r\nVYWywV1eo3YzPkCy3xrrsbO8LKNar4wVQv0BrU/FzkxXUIHiFCE/fQUQqeJm\r\nI1eQ/0blvy/mHRSs7o9q8GMymcfBKPEIFazB9VxepGLXKTFxjgsAOg8PjKEd\r\nfBb4F8MY4D56aXRbZL+/Jlg0MH65J+tBRP8s051leN8cWjADU08ZQzoelhCa\r\nAw52NlCQwLBjpMzskk5Fr6V2qEanVgYT9+FH38ayzUtWkL8fz1qZ4JnmXp7H\r\nblH6CqGs3Bk2hxLPCCkslY+6m72jMhTLQWJceejhbmpnkpT/0oWvhnhX7Rx4\r\nHCeRnRt2G1ACeqlcqnhWqlyjbE8phz8n3q6zVUWSh92Cvfq17m9hC8u0n5Wa\r\n4/vt/lM4pxMUK5Dj0CWQJjwXtp356dhazKbeTYLeOP2KrY/Ga4wDKc0LMkFf\r\nAQXyRHCj5zX+fNckdKx1zfOC1fsO3vI4R5/A3KWQ6rvf+ER9xWYf7sjSlsuB\r\n+nveKuq5qwh59NNj0sq+Zwb3/rOwz8Da2H/axoQyUuCQgQVMJtWevLnIgr9V\r\n09VJtNCPXy3RGwFxhKTNfGWB2Urk1Od14O8=\r\n=hemA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.65_1659933660707_0.15640590703672141"},"_hasShrinkwrap":false},"1.3.28":{"name":"@leanup/cli","version":"1.3.28","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.6.4","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.28","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-ieR0K/y07Br7eLvAmKZOKKUvGPIY+OhRO+3jYZMQ0ihwRSVc2rpU5OXa8/vh2I8t6xMCteZLR+0yBRs4Bzyw2w==","shasum":"338609c71dba04e359eb038f1ac3e92c5633273b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.28.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH2AB4r1QTs9rW8Ervvxg/jKwXvCbE5V+tN/SKaQ5+zWAiA1sczIvPtIdkCl4BCrO3DMFpEZ6j5FJLYF2Kb6IW4a9g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8JPqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoRPhAAihBTFKf5U9RC7RjjGtjcE2BKD05cGoMp6/+cO6n4sY5TfW29\r\ntC8i/e571Z4lVNwUeohUaAXTF9GuGTnNzEYBgpnVbC2PJrhEn1ay3YFfAscA\r\nQTJP0nqgWz9JAIuIRHz69lJetQvWpLZPVFs+/OcIGoCvZ9v1AtjxbgWpsQhZ\r\nZm2r1I0GE4kbW3RR45H9gIsud65DaHiWv58OTxGPILmVLCRd641b59+U9fmx\r\nrR/L1JlNGMLUJAFMMfvTkOgw6tEPtl1Q48hsWbosicWOINQkTM13hVQOJ9CX\r\nCFo0TCHYvkAcrgCd0bAWU5yhwBu1ErHmgVnTifWGe/dloZ7HjMoMy6fP/8t5\r\nSMJ0MScWcXTWC3KkG1V0/y4FdGqm/4dhello9q0WrLhFmlUT3b1yDKj382a1\r\nVAwC09kZj2CH1UwrI9VcaLgaJavDi72nia02l1hIObq956BYJLltaqJ2E3g0\r\nHfVmJXHl4l+R4oi1UCB9+ybcTLjtzJ5pFJAaP7iHCkFGWnCqmoAqMk5d4LKQ\r\nIP/gxm2AdgQN3CnoPWdDJ80ZkAA3LlyxBYlFRtMep1hDbZ1k6MozH8ERBFeZ\r\nmzTjNMeZC5JzUMISwnIuEfOyyy5mob5sv/9bBl58E8MMfay/nBP91MaFFDOI\r\nJnO1Hirib/ODN/Zd+1ArFNoUqHhZxhhS4RY=\r\n=tHpy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.28_1659933674077_0.3452588997679915"},"_hasShrinkwrap":false},"1.2.50":{"name":"@leanup/cli","version":"1.2.50","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.47","@types/prettier":"2.6.4","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.50","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-DMd65lBGq8MzVUpph8mBztDjQ/FR3Q6iHZusilo0EP3FnoseHZbZeaONuQ6aD7yGDBpHf1Whwiou0MH19UkHDg==","shasum":"2689d26d2e7574045ced29a895ead9d8aaf364ab","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.50.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGmbNelNbPlXTcnsKZja2U5P4tzG47O/j+YetBfLO0GYAiEAyUsHkK4NHYvkaJjyG8zTtRA3c+eVcIy+r7g6UcvCpBw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8JQOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpsvg//WRUjKOQ4sbZcGhFgQr/5spTzsx2tIvdr3iM3IBYnM+u2f1aj\r\nK5UadP03VwfkE68Lu2YYz43r69qdMJhBdFjGKqJiOWLwcgZLoOVDbL38hzjC\r\nveN7UGI2h2VQAeFJeQZtPyadPhJACwKS1YT9Aaox9KVxmkhKdySc/5/f8MWN\r\n83yagMcjplcuRLCwU6l6JYMIRbQpD8qvrSN53dB/Qw+rTLcpY/9Y18yEhRcO\r\nEvGy9WspI7nJC92rEL8bW1pbzOror0cObDutFp2TFFyk4Fmv13SUMZUklzNr\r\nBGmc4vgCp8nJWiMvbqG7uplGQLUDqLiUBZlCx66UtkIGn1l+ZRiyc/LPEKnj\r\n3zNj4msqD2Oon38+/NyMcB6J3mf8HAuiEIhq+VJv/pbQGnz2j4fpw8qb4E51\r\nganTT5LI4bNXluqS5EMPI/j3GcsTtGHJ1mSTWXOjQn7SsZOhs+cE9bjwRASd\r\nY1kbC9sED0cOOxWiF8HL4tMfxWViDoRNU0F+a+ea27bf3qbyqKxn97K8049j\r\nXwex0PE/wtG4zOvrpwYExqVJIEzREZqGe6OYy1fG1nvmA6WdYE8FhzbCmIgI\r\nLwbGXQmqzGxBqgnZwaGYZsD3H8Vohwp8qEG7rOqz6bf9kwWu4/N5r0K6FmML\r\nxTTGCUUAGprYgcZ5nuxgyd9ZCKeAKf/FhSc=\r\n=2WVY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.50_1659933709971_0.9681958317185582"},"_hasShrinkwrap":false},"1.0.187":{"name":"@leanup/cli","version":"1.0.187","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.10","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.18.10","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.18.10","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.184","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.184","@leanup/cli-core-test":"1.0.187","autoprefixer":"10.4.8","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.14","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.1","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.187","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-k5KI1OrRV022IbFvHGY07g4u2PyJA7+vBr3hWAllTxfU0269UYFdFQqYVKiuNG26JpiCKps7bkJbV+Iu1CLsjQ==","shasum":"0010470d145193eaedbc1c57dc9d98776ae7de39","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.187.tgz","fileCount":64,"unpackedSize":152165,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICJ7CheHoyYk1f9AETO4fHo0STfp8gMSC5MGErIVvwNfAiEAg0o8IWE1JaaI3tkwLUdG5zpOOC5WBPuAfi80/jxk1xo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8JSYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpu6w/9FhtN4Qfcu+Ux8Q33IKiPNFBqLlwYVzyalc8DUPUkD054JlUZ\r\ndaK2n0ySok/egWjb7I0TLvU0Z2hRnyNHfOhKHbIiAQvaSCdGAx5zeTfeGu5R\r\nlDrxc4mV2HfCjTvwUXTb2h26NUTfLbuGd0YlFyKmkfVq8u2VXxrYA8CwBmFw\r\nAfqwXQFyuyFBEV7GZcGt/fgaOXpMyq9Z8u+fV7fwl/Ezx4ZMYj/SZ3dEeuz1\r\n6E+J4XYpzeJwPdCmktbnXv6talY4Alj9x2u1dXSwp5q+SKTRaDbv23Po4M/I\r\n3kxx9X2QO2yKAbtB9i2/Boae7VomtItDxfh123vB7JKRSkV65R/NwvnENXLa\r\nqSp+OmOCp9RTYZJx9ZbeDoQYlR115+YCMThASfxJ5wXpofRcPZ/qSH7upb3D\r\ng/C8GDZlEjNWdUkHXF9lNPkQY019YmAGzKu9kOqZZuKDESUMZHMTeiT7OSs/\r\nFI4VV0iK6qB9qUp3qzSXP2WTgl8XpxGcIhqjxUcsWhHXZcLFOdx35PPQEpgw\r\nsz4sCOqLgvn77PtL19h+I12Pqgtm0ktDrFBal5YRFOzXilXqvpP1yB4ovV8p\r\nQ2tj5l6ABeF0g4RyXGfkmuijMIHslQp7gIGdkUDL63lFVFPeJKiypPAhJESP\r\nx6/WQ8N7YbDZVIJI+ujs+mxkwh7p91zxG34=\r\n=jViX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.187_1659933848640_0.2480007776957831"},"_hasShrinkwrap":false},"1.1.82":{"name":"@leanup/cli","version":"1.1.82","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.47","@types/prettier":"2.7.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.82","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-yKos/3bz4SBUFh7t9f2YFTn7A8RUpA5DmO7jTYUWtd35qlob2GXu+9FLt4Vams/qNBqG4pCa2z1Oy2iTcPE3MA==","shasum":"7cbd01f0ebc4e74b27a65b6b981a2e540612246b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.82.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBaLKOa2oN8NKELThcjoHvFa9dmQEqzYvo7tS/BzWF8LAiEAq8OHd5QVBQJJwhBiOruxJfXLGyOiZmdCy4CEdHvd1aI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9dgBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoVCw//VGUPHUhiz1nXqdPk3b0oe63YqrZqN0fC+2lShGG3CD9j9JOr\r\nn45SS/L8jK4MDv+tidT2ZJkk2v8nZ6s0jO1d65mgQLdCM5STE/k7FAL5GG6O\r\nTghxwXpSXMMkiDLIwy0W3byyEuk6YJZdcPYFIf1SrTb4PnH5JQ9n8OqT7L3O\r\nqOtFZ5MZDnyhYGuSCkFDnIxHmkqLukcCCDXelgzX29HsmVn3SMBpYfoMceb5\r\nFU+D8AMP8ZgFd3NUbEzGLSCSdV1zYfUo/cVSu0I8iSmiH+C2RFRb59W1M7Qv\r\nf+eHASKTCjliscO8Y89YMyqB21zZuk1/xg1FC+AmbeOZ14qeij0hTsNFrhUS\r\nSxozJrQQGT7bsDhe8XXuG55bS1qxwyDACfRZ66SetCfDvQC3oCPwQHPB9OzQ\r\n9ZSqg8LmBMjZeEkyLrZayTBkIAxw5rBzCEPX4trMdJFcXCj9xpMjqRGZmFbg\r\nAU4Sb6r90yqbzVDWpN0VFK1G29RzOQfEZKR2ulP/YUr1pImHKkYatHQ3GUky\r\n/EeJIKSrMsp7CCff9PjshJmzxD90Eh2pOJPK0ThtIyEvRG8ROXh7AP5QT0cU\r\nX4hIoY05l5FMq3c7IbvlGlmcih+ifMsb5ZRzVQh0VhYMo8NpLbahgMgwPCuF\r\niTwSKzHLXD2MlhRhc2TXV7oFvaFW8pWW4aI=\r\n=qAD6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.82_1660278784852_0.24087942376467497"},"_hasShrinkwrap":false},"1.3.29":{"name":"@leanup/cli","version":"1.3.29","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.29","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-+XvHkFFoX79Uk0QiPNjkIaSi9VJJNThANN6jmiRL8mAydr+8VqUJDv3NPe8qyHueV8+eZTnUYT92DlsIF04z8Q==","shasum":"99860d0a1c30c698dff7350c6cfd38606f07288d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.29.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDC+s7rpJ882yppnp8R8O5fAc16no09+1KbNx59G/ksKQIhAIg8eYd7by0lpUQhjytKiHCZn/6jgoPCxSiPNV0n7JJ0"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9dgyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpriQ/8DrsHxTrSSuIRN/B2TS1odZWVU+oycPXFrPk6Wkl+W+xT00mM\r\nQSNkc3fSgLvn2qesAWq6axzr9E8yEmBAMr96wld1sP74kagLokaJTJMxaoBR\r\nWrL+dOnfS0UWBLuKKpOWKpeF43unG8uhEWV7NIgzrwlUGv2g5klv71ONiUle\r\n7ACrzzCIVpsKCZWapSMCbFFZ33cuWXQ09EG1hzTx5HhaOqAYHOEsIhhxA6Wz\r\n1BNloPdYPPWK1Dm8A18vVQwWMoBe9Pd/7JJEKyPU1EwEBA52d+CU9gSTMh2t\r\nV2FJ3coQh8faRddm/eiSjNTKbACPKPJEsSydmh2UB3496xZl0uCc9LRKwgCF\r\nFtA2OlOpKXJl/+B2tVbO9a4nEy012bD5egKJ5iH/MdpfHlCJ0jibaWCkWrJE\r\ncp6RN5zDv7P+1ryHQKYslyhrZIPIlx/2vZt8L5155NImcjdOD0C6GfCnpjw4\r\nQCSRldfaoTnlGLsQFqgIIwronG7G1enqpWpqiL+BkUx/DkDeYli41bzraSe6\r\nS1o13H70HamgrKYcZyy4jhIAAyWWSCBRqd/V+qFgeU6AD1NrXH8txfyfe60A\r\nY6mY3fj9lD6O5XCV9VIWgcZ71kWBY0XR0FqdRiagJ/GeuIHXQDSHloQL+W9G\r\nB5H9HhjJ3zKHmfxVL8CMrSZkyY0OHEDmJYg=\r\n=HXLH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.29_1660278834394_0.13463049220690504"},"_hasShrinkwrap":false},"1.2.51":{"name":"@leanup/cli","version":"1.2.51","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.47","@types/prettier":"2.7.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.51","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-JAWxZkCoTslwsIT6Er7HDTSFVx+1u/hOL4Z00tWn6/yoixdydJsqaXrVwbh9I2BpwJ7jh2qHkaqtAAotLNP6Yg==","shasum":"b4847164052fbf302d16667cfc91dd8b5044ad00","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.51.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGISkcU+iA4HA1gBskE6nO4wDtho7mbhbaUemd7s9SJ4AiEA+iikEssUpX70RqK+EsOa9O5pGrev3u5mB1E1lW3pw+0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9dhCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJVA/+ORsAihTWwS0CYevyFbC9mJSrviqWpsCQ9baVO4sSgwiTyDjq\r\nUh5Pvuxsk7sKl1RSXHYNu4RqFgHhVSvTvsLahFmAn1w342De9pY5SyCGlRBq\r\nCJ7jmSnrSZ4xo5DeoCeYs0LXb+l9TNtoBUt4dR/SW7V1IC93u9bneEwYGBJR\r\nbXhT6XlGV41B8qXVT8H3LNAIzakywQp7X8YHUNCJKjoUKvcXSu1oIk0KVDB8\r\nYVo0x6jeGrFXF8Snfk09kRjwble047gqhbDbRQQ+sM0WZgQVA4VHxwFmAx3d\r\n0WyLRn4AAuvlfJK/A8A9Wzi18I/KHbgWP3S4ckZRJozerQeJMX46h2rdHvXj\r\nymvh7rz+ExdVOANc0Tmwo2Jvq/hC0+Xw938NW73JAkMucP6DPj8kNG/KgHu5\r\npN1/Z89Rp6ReL0pW0U8kgGyG1r3ZbwS5k/mGiLX8xExaHSi/U1zH2Bd4ZB3P\r\n1olxMw+oxar1SZotXDjNMWYF1uP4S/hTUf+ek0E+Ptrcd5CUld2Ez/XMGSAz\r\nAyI+tEWbFShXHLuJHLtzS5VDBjT3C/OXJcq3rUSuB5saRa/FeL2/vxBcAQjG\r\nPuY/kW9YzF7/FqdccbS4PtZGA6Dy8yb2lJE068Lrs0C/6t890g6hw9A970pj\r\nXngKCcL3skF5yisMLqHxBK/i7I2Nnic7YRY=\r\n=aPs6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.51_1660278850693_0.12029696713525584"},"_hasShrinkwrap":false},"1.0.188":{"name":"@leanup/cli","version":"1.0.188","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.10","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.18.10","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.18.10","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.188","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.188","@leanup/cli-core-test":"1.0.188","autoprefixer":"10.4.8","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.16","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.4","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.188","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Lh9Ok3qIypj56wjTEdymAfgbwQN1V9d9i7StSYWm60sd22vUY9i2N5KjeqnFTHaQ0qLAzS3r+eM9Z+sKizWDfA==","shasum":"e6c8bed1f8ce6c20707a16628258a50426494651","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.188.tgz","fileCount":64,"unpackedSize":152165,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqkib27l/MTVMEM/OiUwGdS2NrMnqx0ROpQq/53b4LMAiEAymtusJA9N7wyLN0Y7R6JzQ3p8kKsiM7CFwLvU3jMfHQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9dutACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpxtQ/8DT4XVLzJfw7JgX3jILicvWdJ+fkT3ckuAiZ33yX6a6Ia2wX6\r\nY5FGFPcp8w2lSEfcowbiXrdY5a0jnpU+zupyPsKBGjc4heNFeX0DycGAps4z\r\nvoVuyvdxUKFkW/LqHdXFjpQ6P5q/LqPKUeOYDKddgQNK52y2FBklNHvP1ddV\r\nDCrml/iN+WN+j3gWDgby/kcf6cBY09Q8LkKzUA0zw+07FbkYlUi2ZHfJWEfB\r\nG65027WBw3BI+/zT9w7gikSISCvnjN9tmR6h2+ptpRUiKUDH/neLhsNksRUQ\r\njlybidfVY1ex2dgxoYeGcBOKjd9LQF/A+axzin1HX6EAUzAF7LcfM1A4areg\r\nB0DAALPwqJ5AnrIzZCQuO5RQef0SMDScYWXmXud/DTzj/DL+2/VWBr+7JQhb\r\nZqqNyoQj3B6IwQHTjjqhrudotLB+gneZVQHhZagM+6cZzVMN27ZPOmj6j9CK\r\nLec1++ez9tzO8PvNi8XmSSh2+lumxnwmaSG4GFJUbxtM28vRwSC6wx4BC3x+\r\nl0dQY99m9l1LxpzS9jSInn+XUoDXfB/J/5QWcQK12Fdrq/9FCKcpRFBIEUdk\r\nwWHHFEosnNQgb+S273ucmL8fp5XTHRwTU5Knn1wVGNuhp01OU9GdM8RNZkJ9\r\nzuvYgneutxMoG1bNPKtzgGx73ER1IRgaLLg=\r\n=LqOb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.188_1660279725609_0.20154370527911336"},"_hasShrinkwrap":false},"2.0.0-rc.66":{"name":"@leanup/cli","version":"2.0.0-rc.66","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.6.5","@types/prettier":"2.7.0","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.66","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-ZEDolGMtKFmyQf4LPv3wInTtBJOI0iK52nUKMo6t8cglulw+JDONHarsbBUfI0qvwhDJUN4t9Mrkcjq/RwM50Q==","shasum":"530ed65cf7fec453d193bbc9c96d57ee50e4f316","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.66.tgz","fileCount":64,"unpackedSize":140119,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/hY0m249dfUxHA2/KEzI56vW535nj5PjGfGCR1BLosAiBdLBaCE/aX3hfE6GZocwc6dOZ6koK+GoIAIUTc/i7SEA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9dwoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqlzA//fHhX/5NSPg3clkVDM6ZN0H02fORQBtAkkKzFZl/MqrhIziQk\r\nW9FgDUWReF3w6ikREzLX62k8jlAAKLOIL3fqoMi6w6VthYus+Re0A+YEF1xq\r\n5+FvSUWcFYJB6vRojG2u0Txf7AhoCSCns5B3C1Wy2edxq8/pzA3fbKpufIm3\r\n6SunRgPSqGpvu/+8e8Etl/RGr0Tb8fZYN2QD93TxAHjeTDjt6FYR5wo9GiWl\r\nKmU2i7aT2deAfAxNdBXwr26xODyX9POr639aCtVHAMKYDPgzf4axsWm37ON9\r\nLRIVRLbNMvjBUr3+5iSNbzwUU+BoGG1CVlWMCJS1yjnWRawkKeNPr/EoOm+S\r\nuISCd+jzO1zPqsKztPqn3pDi8e9UoaolIISm6HqWVxVc88BrYXOy//YY2Z+e\r\nzQCTbVRqNL3J9P1JTfS6jEA3Pco27NmgAiit1p46siz95lGbpcUDpri9jcQA\r\nIR5tuFox8ITzrnK1wgcZI101fvKYPRBqigoh8Bf4KC/v8FQO2l9eETJxr2+c\r\n62qDb/btjPA0X5SvGPga6CPXdQf+s7xFEYvXHx/KKI+r2tZ/lbtwr8PavXDa\r\nNbK2B79SowvjHMmm0HkCybiN/dZ+0gtvntJQy7Z9E8IyHj3uTS+jkjssJrtq\r\nWO2xFDWOGyJMhS705VPXKYsw7RLDgdhTMk4=\r\n=va8C\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.66_1660279848268_0.6864556962341404"},"_hasShrinkwrap":false},"1.0.189":{"name":"@leanup/cli","version":"1.0.189","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.10","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.18.10","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.18.10","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.189","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.188","@leanup/cli-core-test":"1.0.189","autoprefixer":"10.4.8","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.16","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.4","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.189","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-ciiJ/O5hId8f+vlkHWvdxvtTnVxYyNJQmTBklYwVWvyTne4zX11A8TaiNzOVHAVP/KNN126XFe+XGXnKJPBulw==","shasum":"db4cb54a191f2c411332aa8597756471d31b2f4f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.189.tgz","fileCount":64,"unpackedSize":152165,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGDf5b9ZnXh3xZwM0YY4+9zm/NrufLcBFLYW2hbR3U0zAiEA3B8bZL1t8fe8amVbAlwdjhTyMzAFt17Ff8vm6gNWAKo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/Vo+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoAuxAAnRyGlzXZDHlJWi48rnW0L34KxSRjJjqVhaaTCEeVqHXjEq+C\r\nVNMdl59GHeORJWoRIGQzWkHRHtXIVknyxSrNOx/X1GUpn3VKDzXQALHKXvIK\r\nNWNLqHM7s0+MKnirCr1ylkpnmB+J0N5D6cxITEn6hC70P8dvujj2J0zp8d1G\r\ntX5Es1JDojGTPl2TsF9KITgs5B08F8bc7mQvybWbBT0zQE4ms0VsqIBCX0Og\r\nRtZNxoCFxGtjpy07kcdAO9GK+8uoYPrikFHwVSGh3QWD0CP3Col3t44vt9ub\r\nzoOXf4vrMWSeRftuHyCWIMsfbGdWBvrgHQCqQqaaayl4BQJhHEBjTDM5BFQj\r\nzKsjVfwdzGYP2Av10648/W/fkl5xG2EeJZzs4rP7UeWYE6p4Qzf9aMZrWEIR\r\nm8xD5fDa9zL1WhXIfNlWNbk1WW/DngkcOZkuMjr8XMUklc5q5sMdUqrxcNkV\r\nzUk2WfNgpq6HqC7KUQ/ad+wcMTxqks1cBEHo1b+9A1EdQqpwn3uDjXhTiehg\r\nNEcKCYRETSd8pJN3MVvY/CBftq09WndjGU0GvEXFhHSIzvxVVfeT7zmJePM2\r\nh7SxxSMGjncYu7fiZFpZNwIgRxvsrYs8KduBvyZmj2R9wJVu9i7y+d0A+hQW\r\niF87Lzu80zDP5EXyCeJDr6v7OiEyqwxK0rA=\r\n=TSS2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.189_1660770878096_0.6764107886820656"},"_hasShrinkwrap":false},"1.1.83":{"name":"@leanup/cli","version":"1.1.83","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.49","@types/prettier":"2.7.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.83","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-HzXr/PLoNC3jLEWik6VKwhP5lar8JB513M9C6LW4ivo0HCaiB9Wk+TabCEZo0RI+JCj6lkCBAcsWsCmDRx2eog==","shasum":"faabd962e2ed3017ca554c60afe052ecfc375fa4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.83.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOcak5NTL4TpjRn0uupPH+9KTso76ge/yqfL0fzXbHQAiA8Nc5e0p1yY0eii1Vtw5UBgkqp4ey6DN4EzVH84BBP9Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/VpzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpSSw//Wjzyofxe8c8jiZ+P17anz770BchccfCDQo/vc1ARlcowQ1K1\r\nD3JwZFEdEtP1xbcuWDjnMa8WNHG6gkk5nX5n9HH4MgHBeXox6D+907HvqgUN\r\nqcv2bLJLy7KBgFFNAjrXerTLZzaqyHDRO+bWIAd1EBSEJQh51LsxTP3I/azB\r\nJ4+1VWvofqYsv8RDHSNDE3yMYS2xAd5XGskrKqbKaVeT9LCbMwfJbu6oF6nG\r\nKdkFP3HI9fKDlC9mA0/e9CpxW9kuqELhj0DhxD7pibmrBcL+Cq9WuiOUu8gG\r\nlvYTo2I40tfwRixykhhiQtvmHWzGQhUhqP9H0p6HlnIGgWrtnF6JwjyopbBj\r\ng2E4LCOCmP4KgkBLms4KSIIPY96Ie5giS5S0ZiPbAEX5VORIUq1/GkCVrC6g\r\nZThiaR64/9RUpIs/ykePKIBK3oA6lKpcard8KkojQu6djUkOiR6sk9JgNAZw\r\n6GcB14RPC353dSH+zZM+imN5KBj4lVSvA/nm6wmnNjbhlHngxhJPYNO+D7Ex\r\nAH6pcb4LqHEojIcTXGNyXh8S0VWCyCDbdvnWd7aoLk8xotG7J0dbp8C/uaTY\r\ngoIxe1EdVpZzO0RxyvStQGm03Sl1ezePheOregRkmDT8seIZ3bScyDRxVd4k\r\n9+Xmilldb+yvX8CJSj7aItUDzbM2hRlQc8g=\r\n=toUN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.83_1660770931686_0.9021408170183423"},"_hasShrinkwrap":false},"2.0.0-rc.67":{"name":"@leanup/cli","version":"2.0.0-rc.67","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.7.6","@types/prettier":"2.7.0","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.67","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-oBWRf2jhPCbObyg5EnvyG6vuGEsSy9d+h6a+CNVKpzrtjC8T/ipvcd9ulF/UyoZBukPdayOnmQ9Zhm7m+lECGQ==","shasum":"8bb47c6c35d214d5f0f2dd1c2df07afaa8b7e651","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.67.tgz","fileCount":64,"unpackedSize":140120,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDRlK1RYmGYyAg+Ftvtz1RtGQUP9vkELL87MoFrL+9j0AiBZhne4WSPpGYv06GJAJGbywCU8HfBvg8yBgMGodYh4dw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/VqTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrXBQ//ZSUSlzxhbMukW2QeyXq7pFrkvLUnzF+Em3ynPTFteR7TCr9j\r\nwOFgLGwC88Tj2GFH8peG0WGjKXJ1Mgo3nE/SY+hmOPAFadGSWyDTeB0QBEZm\r\nM2uh2EqDhQ9xiibjHOv7bYbtwoitPFHFzm6+AeC7zNNDI5TUtiPSjtCg3mAh\r\n2FXBTl/JpKTYA4RVXiN0vv7uslaTcCH6oLUh5Om+T/th1nsKSFL1vLVfwUTF\r\n+x55tRC6IER+8/MlXm59nvMJx+HXPSWD+C3WRq5atJ5y0mtg8f3BO0whouYV\r\nOlhDKyujekcrLcS70yJ61Oi33JOGlEVAweyZWSz8gsd0IipDNqOnVEnYKmRy\r\nVOoSGr2TRjM/JS2BpvrFn3/htlxuFMfsaMuYmqJvY9zCMjL5tNz1ZsnnXEXT\r\n81Cp8TK7X4nsndmzFnfe5g+/LHZqTdRe7LBbxxEAfo+998GcePZpPOlT4DZ6\r\nHqEgpLO6MfRI0c+n3SN8xqN2zADdhLX5XOUtCByHnx0XV2WEeSm4zjdfRqzI\r\nvGpKHOj2annXdkX5N2cq2DapJl/2aV8tNYzmDHGr2DxrlCvoR9xeKcloeRO6\r\npnJEiaIgdWzWQB0z/lPk/QciQKXs7/xlRKLas2ICDVHaWjm/CDdlw0JVTbhg\r\n+CBPPAnJRzTKt6mOwkHyE1RatuWCNs0FVV0=\r\n=jT0r\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.67_1660770963693_0.7712019706631668"},"_hasShrinkwrap":false},"1.2.52":{"name":"@leanup/cli","version":"1.2.52","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.49","@types/prettier":"2.7.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.52","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-IL/+SqwQd8nIlFh6A9OR7ufYsUdXl2oroVslhk/Lo8a1P6sjmFx1IXoBjrhT5+iNKwzRgVDQKzqLlc40n1qZLg==","shasum":"09b6da2fdcc8985bc8245a506cb7bd4c5b6ab639","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.52.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBxpO9FJrhlv3H5+1C+Tj+9+nt72rh05a0a6jYMXw+sQIhAM/DQTT2nQ4ooBwty2pIwIg6ggi4HOPMBSANIc3Oxn8y"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/VqnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQDg/7BTyRGgdByaZj/BzPKsV1UpkDiURyX2+qgyGVSF/nd86zHBEi\r\nE0ZaLAsggDNkDhY9TQ9vtvSQcLSNIlLecB/2JKqX8wkw6gCdCsKs30Ux+9n2\r\nrIHnei5pzLVAAu4tGoM22F7kr7mrTBjHKkHfYArx/waXQifDyw31OlV50/gs\r\n5/IiTrRVRGnCKBpVAJxDbuDDaxiKJhqoVoVuhPcrGQ7/Q+BHOXcIKHCy+qUT\r\nG6+kcGkMz1QjsN3SCR3M9opqPMabYbYFH+mUKT7YvRAwCpzM8WH8BAdLxJHU\r\n7IhvtXubJFb+yZIdi2l4S9zK5cpVwk4KnyM7EevqwZ8AQV5xhzuy/C8QZpup\r\nbl45QNCti7syBgRAlTmOoVBUcMhAup9JZEXprueTPZR0L8JXPcn+zILBuDwX\r\nGWXsyMDyln81ASX7TpaDIbntqhCtrwiQs9KQAwjkLw1BpoP/9cBNT82Ws8EF\r\npWG3ZyQ7P1nJBNFS4/9mbfMKhDbKjXI047wZIdRmjmVfL2wEgTqkt8Czb7me\r\nYWMfQ2K19jOexKgSXYlXwRpX4vX+KyUhi5KXCF8z++yqP6ZqOGLXrtcIbiQq\r\n2qwNMB/6mnSTMGMFXaX/RrzanLYBeNoDSpV9abJUgOY6KozEeVxiFzpTwSg9\r\nj96746hcm7phNU6xAjjfvms6YMmhU+IWO+A=\r\n=21dP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.52_1660770983069_0.9092927101888255"},"_hasShrinkwrap":false},"1.3.30":{"name":"@leanup/cli","version":"1.3.30","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.30","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-ihzufnmQxyTRZIGEufOJSZBu+r3vZLDgN0hIkHwx4+wHoWEpZuI599aaijPmb2CTiKKqT0EIXWuP9jD4x7xU2Q==","shasum":"762470be59d249e2015dca6fb953534fc58d669a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.30.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/0TAVdFUqGjEfLZk2a1Y/SklB78wgPFPRFrWCFG8XeAIgLUjIv4Ys5wVVm2em6HFKkMNMbbdXhJ6wMXEXofx4RQM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/V0FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmobDg//R219K1pkHhcsdeGBFDJXX52uZNDUh9SpTAUc56ACJPkIofly\r\nsin+WNsggfzeOcR3X824TeoNgkRR05wn4ZXOaz0cPkqAT4ksrD3n1S6pFRH8\r\nbrbofbRDHofd3Y+rhs1ra5Rs1/AXm86lyjVlQL5jUhehmx2v3fDIGJIUNTeH\r\nJVh9x8jaSkozB9kTxSoJuZbwdymHTs+iDvfDkb66r8HDPkncICi0qSMi8FVp\r\nHvtkf38dMZkVgj2a37jNwgXMhVN2LSMt08m3r5QKbluC84ueT5aZx8PLW2JN\r\nKsjv5rIItJrINBIAjGjj5ExWP2jHOcOIqgPktImeKOYu+G+xVnZsoxKSqHRx\r\nE5iEwfe6HDZI7uPYH1IJWPjZ5LpV4auuv+9HXzPl71CPWkiHNMOMHz+mmsng\r\nwAxQojsvn8ZM4S0ckYR+aLFvSFjKUcrE7fPTi54LBZFRYBW1pYR3ZViWkazv\r\nXwzOFU7XFSC0ZFWzFqYs6GqwHSH7LJqjTK0TNB9ehxNTKX9u6KPf5qek2N8X\r\ndjLcjTt8ZGJiYzkudXGq4Zr/ciHBM6Bu/85j052tQlpL95xr6tS3rdB86n6x\r\nImfUHyr5ysLs69cyOVvaeuEWGpOi6Bz+2QYvTtfhwed+bYT1bf2S/WLbEYmO\r\n8bbc2N3ma2Sh3OkBENyDfNgm9a+YyDZyoj8=\r\n=eCXY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.30_1660771589677_0.3494269269715544"},"_hasShrinkwrap":false},"1.0.190":{"name":"@leanup/cli","version":"1.0.190","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.13","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.18.10","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.18.10","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.189","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.190","@leanup/cli-core-test":"1.0.190","autoprefixer":"10.4.8","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.16","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.5","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.190","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-FOqNCvLuqAvvdJWa6bCPzm/rU5mW7eAgUJcx+G2arvyAVkxhdisi6T55C+RGMlhd9LwFoEmO/NCT76r4KaZQ9A==","shasum":"f9e503aad7d12df3211b4a6345d53f4b113834c4","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.190.tgz","fileCount":64,"unpackedSize":152165,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIApUTJeC2FVqGDileTfwquGeHoqUUwefvJbLTuaO4+r1AiBE2mb6UnfLj7jawEZuiuHH3vfPpdg9PS2yPS0CPVSMrA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCwAMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrvQBAAlHgb7CGZboufKpGExbtaPKQmBvOOF1MKwaxO96o4qsokX8iN\r\nTxGrXpMiZ/1/Jkoj+iFLK+6YRueLYq6ubBcVRo7caLX28mYT++qllvnViL5P\r\nIv6WBR4UlEmiKgK6sDNuIFech0HVSLHdzv/Uj1SaJDU3xf5mp6lNMgkRustb\r\nzBzMUDPZsYF5ek2+jJ8SMlZw+BEiR+lzaUGWdr1Bceua4v+NMGUapjcURCRq\r\nFxw8jEA7UwbPCcrLIMgQUqqBetzVZLPGBCAVHCLQFEoVVGgmS/khcObDBy1W\r\nOoBvx7UIAf8cVq8Eno7f8l3W9ElbKvuKvN90JsRCvQkkwxSmbhBMcdee76NA\r\ndFGKra9V82Tgf2a1vSFu1aoqGCjDCaA4cv1TJSAaLLblOCx+/fKkOWFAGjPm\r\nWQaRhFUZYUx9KXrfl+y+An8WgKe1bsgt5w3XajQc+eV1wT7u1184KHY3P2pC\r\nvbMbmsfosr+/ki+zu13K1pPvXXkvTZjpG6b7ac4P+sq7O7kU4ZC9GJMjROCN\r\nt4UUTqefofw8R33txFP0iYGuzjf1rMQuCkPYyBE1FWXlun0uIjFgIy3+Lzrx\r\nrGiK0N6IMqtc7mTPkM0sBm30gK8WFMajT++HYIBwQdInI95y0BHTrxPZBPZw\r\n97pfN5gPGWifGlmdpMIOypTI4rRpcGYKKcE=\r\n=50PG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.190_1661665292700_0.5694968126709188"},"_hasShrinkwrap":false},"1.1.84":{"name":"@leanup/cli","version":"1.1.84","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.56","@types/prettier":"2.7.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.84","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-qIKlpMoFyqW11qh+VArXCScY6tbd+87XPTVbJo1jgR9iDYEIf8uZrLi5+NXmDjyZXKSkLtDxwJ7w8oTuTX1pfg==","shasum":"2c07a1ec91c8506d52c7ed21a06155159865f68f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.84.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+Cq4gL0YuN6qNDYcZL6tVDzQzDiq7UfdPmA2X/K5KYwIhAIs0me82efuajKRwiVeGe0lxCHTqqxRxcOyFYzmG7Mfc"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCwAVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreAQ//bTJSB37HNpdUvHDjRxBQRw9C6L/xGUSDUAyZzxnfGnXIKPcH\r\ngn3K7x9NnZssXJUnIoEeqGwp2F8CBBxZpJDdxGfPkS7/j/U53ssS543L5YBJ\r\ntmnRj1C1YnLjJ7dz5uAMUWQB/O22WGXhmZrNpm3dCpwewNXFprxKkKPqFVFh\r\nXLjPS52yeqBtUI/pFgRKGfn9RR5j61esKMqLairCDuFDLJdNXDAg5UuNuVBV\r\nq53wrKybnMsNprLCDJh25FrHNeneUcRG0DyesothFZi2eR+YU5skuF21QyXZ\r\nGNkGIwt2MHIU3zuP44Hsm8Fd498fFG5UUlwxBK744U4CdiRbvPa0BqrQ/ilV\r\nASs7aENgot6gKbSMJqPjDyyTYnFrS9i4QTAIHtdaljN01qxfbW3BqGpFw3PA\r\n+aEj1nY3LpQMMiarGYTwobVcFhFkSdGc/tJeRUP0oQwTDkPQECpNCkEfwzsB\r\nqcumMQwk1VrORgYWgM2p/Q0F2jut4tDV9X18XxAPqmsvkqiLDLgMc7qdA2Pi\r\nP4uhkmnwe8/5ZuoXEPpjF3G/1+zQZvj85zH1wAzLVwI62XOHI0s5GZ5V/81b\r\nBhydXiXnvWpKHmvnS9p5XZmFoGopnpkaaUla7SaVGSpAKEhxDd5KUedVBvtb\r\n0maI2gQrHJqT12/rcuZNsZwG0Qth8GZeD3E=\r\n=8Lh/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.84_1661665301402_0.459038211651279"},"_hasShrinkwrap":false},"2.0.0-rc.68":{"name":"@leanup/cli","version":"2.0.0-rc.68","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.7.11","@types/prettier":"2.7.0","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.68","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-HHuO+E46rKnxe64z75B8QFpP2TC3xk4BV3Eh6ABnWN1vnO2O9Dg8XogphRuTyutueN/dV4IiVKvxb6inveH/eA==","shasum":"c26f28b81bdaa8d94c2503204d7a40b36f490b9f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.68.tgz","fileCount":64,"unpackedSize":140121,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAFhKt0AQ+Z3/cTt7l3q/N0xCmwn3TF8EJO4jQvw+OMDAiEA0zFkshB4mshYC3tucmrjAdG1bYNhVhMu4k35de/AuJo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCwBRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmro6w//X/b3gexsqHZAPnbBFw3oWoLYhJgjsXycmo/RdVKB/EPoNDKP\r\nzGz+HuKr6JSnNy0ybrvIBeIVEHwZeTD6pvKXBAxrMAczDyC9PPPPt01DHS/p\r\nqglVW8YhaD4dnl9Qi5usQuP2jBWEjmov1T2dZkQUDrko5z8niZwcYtTIV9lo\r\nIpNHfydTam5NOkr8bXAPfuPFRB+2TpAES/mZZ0p4IcFs2Rm68AtsH15bR5Ak\r\nQdJ1nYOtP9VgbDxR0tKmdd00x2cQnO3ONs9fta+fm31G1KItYq2yETWiWGiH\r\nL8XSYTXzbibzHsSD4QGf256f69W3HIogPj3aliv6Yhjgpsact21GVXuGnqd0\r\nWHiqN6H7KZbT6Axg6w7aQBmUjJO1zsFmu1TDobHiZUW99p5rcW+IO0Hw4JBc\r\naRBGS0ecxQ4IyHnBp81Ue1PMTlqQrySADteqJAQhSNoAX/D8L+JGmRqMlJSV\r\nwcOiTmx+Q9Ry+Brr8wr47T/acvUq996bhivybJiXhU7ut2OtNRvCtoixB8cg\r\n/kThV2bICH1O8G234fNzaijOsW9oVtf+buCzvK4kWLNzha4FxeFyomfj69Tb\r\nOHN77kJ/6zqeizsNrOXbdZbEQfk5okzmCs2oAo6GzJBlOBjmxX/miDgTmeX3\r\nYQddceEQpzLx6Sh1y58glm6mBNnzvzIFHvc=\r\n=t259\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.68_1661665360798_0.6803237875852901"},"_hasShrinkwrap":false},"1.2.53":{"name":"@leanup/cli","version":"1.2.53","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.56","@types/prettier":"2.7.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.53","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-yC8rklR9celUHSuP6cYv1aMNVLnfax1LipFNWVEhVdJ7vkOzLs+3I6Y/0+rZ7BOYRAWNEZBdVHDSKL/ynhqvVw==","shasum":"2af99d1c2f3237c5d141793ef9fa0b8e4d1b1a31","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.53.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEUFaiwO1sO9epKlW0e1uyRo53MIs8c/2HWzv5ElHw01AiAj1bNV0eIkO0kA93dSyJUGZ13Fy2xxmNe+s5QrkDT9xw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCwBeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqvog//bgQy9D5ov89AtJxAo+LBGZLQpaDSLn51YHNp/iA04ae5AN7m\r\noQsqAtQYcIBkJfyM2+WcdzMukJf0lfYV9ldxON+EIJHv0utZTEQceZ49GmYi\r\nivFnfQuZ+PyHu5eOU/iSOsWGmtm6y3NzhgVhfxVkPpPL/iXXsYok78s2bgAg\r\nE07DVXhG/W1bnmW1x2RH53am+BIqDVX3te3crZcgyVZijbqodzrzbjF5Jp47\r\nwcSVu+GbZsP4Zhu9j2lFiUGWpaE0qV+3bn6scWk2zPUPHBsThq41T6bLW02J\r\nR8T40yWCcLh87M6Y5iX8kgMyZtxWuzohRoCztyWh1MGiQaRISQe/XSuNLo0w\r\nWK9EWCwk2wKZ3Pv8yOWpQHgjzp3yTZrzItbAm8rvCd0nCCGDp78mjruoWOau\r\nCCmxNvDu3bSUp8GaFS/ByuL3UFJv7xsdIf3OwczinesFC0sKAfloKK7ZJNcf\r\nyB/Pb2vF3OCakG4MrUimJIFX7P8gL5X1rvQ0AF/jX7204eC3Zojy0VKWddkg\r\n/zCZtnZKOp4QcsUwtk0s9zKSAlv2++e2XEuWFd8NOWcwb9flqq1+CE9kJft3\r\nR1SbY9H2+3T+fGKWV++Kbq+aZzZdoI/m+mCcLxUU5U8fmc1R9y9/rPZtURii\r\n9kvUxsCoFcOpNFBpzm0TnijT9ntKQ0VqtSw=\r\n=86UP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.53_1661665374670_0.2410102282364972"},"_hasShrinkwrap":false},"1.3.31":{"name":"@leanup/cli","version":"1.3.31","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.31","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-xqx/H7dAFenpxlXa+YoZeYmudBAUU5VYmi/UQmhLtKQ8EqPHB/Grys/zN4JbvI2xSdu1mGp5IompD/+R7U7itQ==","shasum":"adf4595c93ea716d283cf32d25af133068ad9094","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.31.tgz","fileCount":63,"unpackedSize":140025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfo6Kfw9y0BCLpsfU+EJCN/4IbM5on42BpIpqld20fHwIgcWzBg/5Zt1x7nB+CcjOxIrGZxcjJLnnqC/1apDdHMnk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCwMoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoAShAAh5juM1JbYQzb3HKSmmiNlQB/jhSa7JFCAkiZeKRLtnm+tVdM\r\nJbfOEt7A+gSp0hQfC8aexl0Z5L8RAujOqqsYUu0eG+QWgki3jlKt5X0wF4Yy\r\nI6J4v7tXTMTvRaKRvscWLx2sERyUc4ODhvOeQ3QYV6BtjUPzsmf9KuMhMIFI\r\nslxPxIlCaBY61S7JTpPJVCGYESibPCyEMI4xW+iBDG0Cr4Gjmy9UgOWYxczC\r\nhKa1k+u2P/rt/UfipnnLjg1AMg9QEdojHfHQLxkOr/a1Xi4j5FqnyqctmBug\r\nipisngXpHc18FrEFqF3jGRoO1n7a4R8Un3AtK22p+V3ODCOJR+wSf4g9AD9X\r\nWBn1rpU2L3LKYAtIeqOKb64awob61ySDzDLnW7SHrVwKQWNFshNmL9+NbSkO\r\n7UPxNFZLArreuOt0cK/c7IQusVOmhqJTsmoDh5GynxhnZs4yBfYRs1WnhioN\r\nN4E6mCswunAU/pj1t5AnkszhfRClVVE1VbSqZvT+WuOd1ihq/O0Tg3Gmat0A\r\nJSTNHyHYzQ0n30ztmI8i3McaNjx4UY8isRz4IkzL/DZ3FwvfvefzGGevYTYD\r\n0hRBR+YkhevA4eqw0ep5iWBXQ67R86tTYlhF9WTe/t5J57xjpW/qn7BHE86n\r\nOXcaQ10lIz2DgtsYM8znMO/9dAzYNf/yD2U=\r\n=abxi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.31_1661666088534_0.6379752092586155"},"_hasShrinkwrap":false},"2.0.0-rc.69":{"name":"@leanup/cli","version":"2.0.0-rc.69","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.7.14","@types/prettier":"2.7.0","typescript":"4.7.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@2.0.0-rc.69","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-eWpUFcgcax38pcDpOaEYU55oQ2qJwpudOeAkXAnZ5SjNK6k5oqDpfRQyctT7hHQVjoTsMB7qCdi+cHLDMsgWzg==","shasum":"54f5b9fc713ed8f8cbe610ab987d4e45f3ea068f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.69.tgz","fileCount":64,"unpackedSize":140121,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiWEAFgnqfdJq2+Es3ffL8V4EXBuXk9dMeQ7R+ryoAPAIhAKPkzbg9Zt5rYEeuED1O4zExxxQFIeHThshAZZwTZmVN"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEs2uACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqKeg/8DNn3JbOCCEbfzhgMmOZ5nqyH3vpQDM2+UwF7+qaUUX0glLfo\r\nHDKQjNbYJez2DejfUJV8g5nbCaUT6HgarSW+C1MsTRuDpwi1J1WDd3er+2YZ\r\n70PfrsFbme6ZCkjMPAHHqY7jxM1DNgLROHVUd+jD43LLfmviBQPR4ODag8Ik\r\nnexo+N1slTI8XjJbKlIsLkkaYt66JfVnrNzkaU4msPNlzuFxWFvxSFocb21X\r\nEj3li8EC8vkLgk6JMzhZkTGc83VewhK5OcvJ9TlUI21X+Ply+Z7Gc3ybT9JB\r\nDEajszQMY61VYya3shTcz13V7L8jkJeEwoiaZ60lwk/yHYd5KNj9ny72yLmV\r\n7GnxkX90C28+epdScDy+byGtTRa2//q2ZsS8xDXAsCae/W3fIb7yKcjehhr/\r\nBhvBc3ONAHyDBYLg1fYPP5ZwFc+rOsdz9kml+1heepGYR8h5cctth+62Eo73\r\n2ebbMW9vTli0Li+tcKgWFD5kpviQ+uS1znPG4G14ZZ93J0D82z7Xd81I5GVi\r\npaiPBvsbBt6QTyhFeH56+4ckAu4WWYW8xvGkKyoodlovDhqqbaNiV+CWjOTJ\r\nLdqyXA7ujF6mTRCmNwW2bdQQDTd/MMGPs0TclKfh52lprW0RqamgNUL4TQg2\r\nc0kfcm4kww6Bytcj8yhyUSRGgJEeWNcNFPY=\r\n=ZQx/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.69_1662176686070_0.5032167491673032"},"_hasShrinkwrap":false},"1.0.191":{"name":"@leanup/cli","version":"1.0.191","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.18.13","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.18.10","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.18.10","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.191","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.191","@leanup/cli-core-test":"1.0.191","autoprefixer":"10.4.8","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.16","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.7","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.191","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-itava9+uQw7f0RC2U+hKcFwgNWfq9YblsxTtZVPlWhF7htPClceg8AHwE1ao4g4OOFFxXg5YoVx5xPdXj+qFIw==","shasum":"7f98f8d3fac0989f264d86b70fe5e67d402dd55a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.191.tgz","fileCount":64,"unpackedSize":152165,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEiNWF9pIODwZEW/Ub/lLMBJL5M3mObynqhXXT8bfcqdAiA0gIMVCXYuP6tLmOrrtSHTFrLnQRPApATLqwLyTJWD+g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEs29ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpQmg/+PH4InRevi4ttKo29/Rt3QP4y3rkB1d52yrdRaVLkWKKidKVr\r\nEUDD839Wkh0dfXU/+vqPmVP6kZzOHT8uP66t6/FI9uR58mYmJMShnqtkUvoE\r\nyNKha2ZP2cMAVShtfERc/GbaKNlaczOwvRmQSLL1nizhBFwvin3QVD3nyJbn\r\nw8raagpC8fz2Byd1IugC5n6AJiWybwVvaD63bpffIu+qqeIcNWYd8TBpTQ6m\r\nJ8A8GSldHkM/5pWOJgT0RwA+ly4xx+hzw5APtgXEHNh+SOXO8o5sx5c4gMeB\r\n3NReN0Y7eNJFtDEjn9ZdsBlwDU3mx4Y3rpwp3/mHuxC6NTZr5EmuWWQdHu8d\r\nklR3wnLfnJfudZJSxVQkorSSE9qzuMBgTEl4osOKVU6tOOmOY+LR2f7+QKC7\r\ntwVV4mlcMwWe2Bbb77QKzho1H+bqcWSTtLGXfEFgLqOtOCltsfRBfE+/atB7\r\nRA9qaEBb0IY28p3SoB3FQtci2DHof++tvsYRwrP7PNieN2uMCTi55vfPtspJ\r\nnSq1PbGd9q2wK02tImgyrS2ZrEp1zZT+c6hQxXIgagAVPAS6jtkmXwuHw+nT\r\nw4GzQLu3jpYkdhalqasfAYHIO49V8BUwYzyjyT2gkzKbc3bt+Elnkc9YWZCC\r\n5Id3GfSxIKIWypvwwS2xhZBsZSRL63sTI7M=\r\n=G/NW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.191_1662176701339_0.7551721801283164"},"_hasShrinkwrap":false},"1.1.85":{"name":"@leanup/cli","version":"1.1.85","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.56","@types/prettier":"2.7.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.85","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-9CNpTlDILsDxOPOv0brFUhO+oBNOzjAYaiedAbOGiH0/P8tdLE6xhuZ2x6ybzCdRFQ+9itYQDxS5l97NQMe4Hw==","shasum":"8f8d962ae06c2f98d567a08a74a4d9af77e18e1a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.85.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFvaiAIF6iNxJWEl0lKYKo0SW9VFZnVBntjrM5+8GiCgIhALhgd8p/Bbd99qH1eUYNoi+tohNLJ1jkA0jsNGKgy8Wc"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEs3PACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrRDQ//Z9MfrD4kEHc1K2CS9cmJDROksmzJlTB+B/ff77sDYR936Q9K\r\nKZTRdFM9WjNgIEPwBEpQrv176lgPo2DoRU+yhvui89LDg0OFgQzk2yKZNeKD\r\nvWimKgB1XG6G3xSh4zbYnK4aG4OLe9AJkMHaBxAjOyTIVMyBh8CXESayqxoR\r\nrmHNxJR0xqfBystsWZOx9/Dj6UBVC5fTpd+a5TIYBByQzd81uCa4PnQiPUKR\r\nsESNJ0SigaIre94VboU/ivj0GlDMDZyalEb/WDsN27dSDRgFmcNGPovM0X/Y\r\nMa7wL/YHbIuRv/UnbbYncHkGslXHu0xEmNa27ghd6w6So8sgtHVOi8D0PeNY\r\noEcVgdmzSnhOTHIoZbbl4ji8OnBSzRR1T1ACuhKj+B9pQ0fPL5KD1p/wEwG5\r\n3g93tRqCAl/XnSX3DJ8FRl++pk87MfXWIZ/1cMZ4S8cDBwM/N53vRx26qTac\r\nrUPdFAJL3jsVyK2MSZnWYikmNiynHPgw7zUSuz8L3bBUv8rWjXbiB99LnHv0\r\nAjlFn7Dh7zTEGqYJCnmiFZx+C6xoV0GyzBNhmWARTMwfLB6O04hU3VyxgrxH\r\noge6bYFO+AmSYdslta2Jl5xfFsXA4tWveZnNt+CXsJ9qDP5wkHtqEhx/ihAP\r\nQoz2KjN03cIJgCjU9Bx6vfnvpiAXfeoyC9w=\r\n=Z+8i\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.85_1662176719304_0.22638809582588104"},"_hasShrinkwrap":false},"1.2.54":{"name":"@leanup/cli","version":"1.2.54","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.56","@types/prettier":"2.7.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.54","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-YTqL2ytLGjr3HpsPauR41UAfAN18AbviTIOeLZWBwJ0XbFVsz4k3d/JdwgSDPE8Rnt3lCLvqA8HDu6ZwNDamsQ==","shasum":"f579ee38fafebe0ac19f8244567f2ec66019957b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.54.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCHyPIyvnaT0EGCwdUXZU0G4VuPeZ8njEbzn96QwYnkkoCID/7daFxzUxLo6LKlZ6gkoHJKidaykXZhSg36IFRDZDa"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEs4MACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoM/RAAoS8vf8aur7BetsqiYhSBRmJsk2OzIwfutndpBi/zg9ozDBQO\r\nbqv4/tz053Yj5QY9dNrmiSpJF2Mrqzt0UiyKNW50FWsEFHmEHbjxP5YjxdnU\r\nAuiE6cfl4ty9O2ufW/tC45eNVDSZz+l3GVo9C/4QXO+VelUXSHnb5c1nGQWs\r\nrghoT208jDLzgThaKt11ho1ZNIsYVYSZ3yl3vEbHYKcdnUSrhHMx2Qdqmv8D\r\nKdM38b94P0I9T43cFMOujGf4qDu+MPAYhuMoUim6hOJMLqWfvuDN7WAhqEvJ\r\nhnIu1vVISWsTkV68CkuVpnZDNC5rzYzlQnxeQTYg+/dh9k+dGDSxFGwDOUKf\r\nE5BKJTSixoJiTVN2vm0lv1mPl6O9ArkdGEAOnCfZhZ+aaB3vqL5F2a20BrPt\r\nPnxGjjVgiIRcl/ekg1n5PbG0jxKEQxfZu3ouAJkidbDC5llPGrPJK9djy7Rw\r\n6SEhyTl0Er+ncqo928zGuogK4DQGvUQ3TgTJS0mDijrqy/nsghFXZEdfnQR/\r\nQYGG8rQbQuQ50LjCaYA/SpkNHZZ0RShd7e9qzWeDo+t5pzGX3ifKaIAUkw17\r\ntrCkV9mltkno1784OxB1XTjfi7xJZB7SREyWyGjcJ3J/dLWNRR7rYMB585nS\r\n022yhqrxpZM3kAQyirHuPLZS+WZ+/fSfJ80=\r\n=T5eE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.54_1662176779803_0.1684971130347115"},"_hasShrinkwrap":false},"1.3.32":{"name":"@leanup/cli","version":"1.3.32","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.32","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-edW0RIP03cppXpQZ70yd0q0f06Xmx00fqhti2nH9qHFkDGqHwMPWO/4B7f6P3WQE6G4CwJVcASXp1oNS70TqFQ==","shasum":"385f0cbc5c6d344a36dc1336bc4ba52dfed66d53","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.32.tgz","fileCount":63,"unpackedSize":140025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDG7LgyFo6wP3HOuC6MnSW5eXjrEsMiS5olGKzMTinIjgIgJR1yuqAXuC1EwgrgQISMF4OQ7b3vtAqnA7U85WFZ2p8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjEtEGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrphg//V5bPkYFWBdO7zB+rgKsosnsadujg8XrQY4oA+xYz29eLc/OF\r\nhwp9Lw5P21f/R0YL1SfzZccNQUIzQde1PNzIpFU//AkzqmU9oU3AHZzyrfDr\r\ngQgUVg2tYyUFbypxahoGIuorpp0Hno+gXXIAWMmLy+MseLC9K17l+mZKRcb7\r\nXf6shpQQlKOhHAo7TxC8sj5LyyHj1YcV7RnztY9wqdSIYJ1HQFLvaf8mp6jA\r\nnEBInW7ARmmij4E1DoQyfG2tgSalMyyEw1bNwPFoe/WYfNLTI0K6/kFzqYy9\r\n2TMRAEYar9i09osszf4Iijqh7391Z0kKAbZlMEHFyKu6WQExvZxlRoxNIvYy\r\nyeqS3KMOfDYH7b225RiQo6b1mJkh+1joynA8Dk5IV/s5z+rGd/E4YoMqUyZJ\r\n7Zj/SMZ6kU2wJD1Z/q6pUqKVNgg1JlMDvCcaoeKJdom4jmVNl2idjHXwSGcl\r\nFv8WFJ8U/iI9HbC58o5VersBtldbclP/aK9vXeYpy9HK2im3OIteySx8IN2S\r\n3B/t05tErOkfWyGnEhN+jjgytQNsbnfl4HLNP+U3Wk4hXqUJYGkHsZBATP8G\r\nS9jORsOYx+1BlNy3o3MQkgMmy4fXoHm6ynQ/tv6cJLFQgEm25rRIACcmbB3E\r\no8r/Y43POLyVvLZB2Quv45ucAA+yB37Urfw=\r\n=3sMO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.32_1662177541780_0.6794484203545152"},"_hasShrinkwrap":false},"1.0.192":{"name":"@leanup/cli","version":"1.0.192","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.19.0","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.19.0","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.19.0","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.192","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.192","@leanup/cli-core-test":"1.0.192","autoprefixer":"10.4.8","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.16","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.8","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.192","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Y6Mm4BH3vEzeb0ZgFR0LM/qrRbzpVEmZlm5kg+S+0NuHdZYyM4r377pV/oXy/+DlqJ7BX3QG+Vhfcq/GePnqOQ==","shasum":"149c0caf234469fe24d23d1af39a8922663f177a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.192.tgz","fileCount":64,"unpackedSize":152162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEFM3uRYn+A/Un1XcI0E+IL2ZPKGEUhOv4L81aXkDn8YAiBrMi7BD9qvtAxLFBWlgSRWIej1A57dGUJe80zXJhn23w=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGW8eACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpvAw/9GgyBRKVCeV7BtfQXt3y2jcuV84DzYP8YFe4ncNLPDJ2LyEk6\r\nyditZGImKyRQOzm1K/WfHCpIFZil+N79NRl2hdN7By5xNJAHz4IdK0fYF1Do\r\n5a+jaiKl/+zHaUwkFw2oGvS8245rROm6R10G8jaUyhZr/j/aQCjVgO6eML/X\r\nWgtbcQ2DmZWkVo9xpxr7fcM5mPEDUn9fRJQzEZmPwWljOORy8lc4ulr8TZro\r\nrmK2xAKqRme2N+uKqAJ3pbQ3M57zou2YeuRfs2v+7H2enJJg2THGuOPvMHMs\r\njST+iZzM01H9FXcWI6hWaV51rwOMsuYB2P5nen3IzUalrNCz3qDq4Y2aeNcg\r\nnaj2xBFv932FW3I3XN9OZ/v6xbF597ykuo5+YCJ5ubPLd55YEntvJbeHJrtl\r\nBP8ZP00+dZZqLg73fkpVK/fQAl4N4JBJZ/18GxajJY5ALqJq0r9h1Zo+eDwY\r\n7UrF2IIl5lSUzir5wKHw7jtzXb5p5wi76HRtjpT5UtkM/cJnW3jHjVM0Oka/\r\njwlXzhIo4kL1BrQjh+CIpk4s0rk4jqzRZdC54B/klz05m/EyKzMEUc+Q1LDp\r\nd14vD9D2jSWBbNkei+wR92+hzg9Zl0HuqeWB4rXTuFOgGPkeJ5wU8GhQ/lhc\r\nOKjU4IZRpw8VnbyXAafT/ZmR683PClIx0Og=\r\n=AnuC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.192_1662611230198_0.7910406405575736"},"_hasShrinkwrap":false},"1.3.33":{"name":"@leanup/cli","version":"1.3.33","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.33","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-BuicVTfRXLzfKICzm08ALCdGRkQ2lZvAV7es7Xt5xhw2tjSdismanBJE5BvXU8DGO35L+xCthhxLyl/M289EnQ==","shasum":"35301f10be97ae60284804cb001f2b114c4b72fe","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.33.tgz","fileCount":63,"unpackedSize":140025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFXm3yAKebcGKaRkilNIZqissEJx0MEStbrcgBwyBpqqAiEApG0ToROZ31PAUVyogZYYkLUpFaxSj/DqXf2A1PRHXk4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGW9tACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo8Zg//fFZLKHsEg1GBAe+63VgxJttxUGs6HwNiVrV04Ap3lbTzoQ+/\r\n55sVDWWAgz5blQS2ICoeAc8oHWNwqjSYEMwWu+Q6t2nescsBZB2gUKG814uy\r\ntvCy4HV1VWBY8vPfSAWal3slEEqHP0RHOuJg4TV+E9mcOdSk6uhZQz2bmBzM\r\nZBDnnBnoYIOpwciOovpqZj+FYw9fPFFoyVhkfOvTeREmZ/ljnqO91eVA9ord\r\n53fRQy4bNFUVovDBBPTwcW+33M5ScAlhQxVit+EYIt9/PkiWXi70r3h7l9rr\r\nSw6HJVviY3VRaYpAMLh4eLLpItTk+c7jevWHPxld6PzQXuLHxnFL58ap58IP\r\nYbk15kt5jRTmFPpPC3jytrsH9zSbLfupdOYjfkOQ30TH9+OZ4h9/ca53ouF1\r\n/vhTMlEgqUPrcdZXESrcTzkKqMcQkIPNMJ/agXkHK+ddKFvEJ/SLqVowaUIy\r\ndYMFhh120ddjTuNt4olKiyzSYnOkHjLyXHHnLzIoCwwFUCbpfiJKwum8PxwL\r\ngWFw0iwKnRqivNx69+QE4+6BZxVusxVYNh7IT4H6y1cvHeWVx783K1IZz+yR\r\n2s0JhN9Ue2hDCCi0p4V/6yFkNuQPfZw/cBKYX4ANeD6X59Hor0RhmUCDYr4d\r\nD4Oz0YUGHylgyBqYnjfrmK9q+6PrJbnFg+k=\r\n=NR2T\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.33_1662611308891_0.3171145210717843"},"_hasShrinkwrap":false},"1.1.86":{"name":"@leanup/cli","version":"1.1.86","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.57","@types/prettier":"2.7.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.86","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-8czT/E0jmRsK2wOKstuUwgdnbmZncEbLeHNZ+MCVMbE+LYUHe1i2nIUZvfRmK/KSeGaVsogzrPg0QWesGdZ7Og==","shasum":"cc32ec9bb0527eacf9c13383c28fefe303de3415","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.86.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEqEZ+hT0bFUuibmTPwRLxCp7uYmhLtTt7Slit4RFW5JAiEAuxGPHux+IjaZX7S6POYDK6l8GPouA0ORg+gBgvWdaeI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGpJmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrsAA/+J3mZ28vMFIg/9RhXz/eYIoYM5EYM+pJw4M95KS9Ldc3JKTjL\r\nHOQV5UclYRufcx3eD1/piMOBSFwMTChHqZ1zZsdABd4UTLSP6efMsixKzdjM\r\nZ8iG3MPygmfACahcAnYi6x2bgUeRjXMdp3ass0wvg2vl/nqOuYgb1zp//diy\r\nhzIOfKlxj+teuPJ32eyQ6o4s1t7+cZQclIN2j+DagCMDeySy8q8qiTcb9mfZ\r\np3zAvq7fi16Ipx4Bk1+I6n5OoYTjwjF0SonZXeDFp0zlVLlVeeTsXqqlydRJ\r\n74VOiZp0BhmjPv8n6mAsKL97/gDsmOvWNqxqBBXYHYJsOn4itehaeSYBpOXw\r\np679q75KhKPJuW8oqvDWTA71c7Cuny3hTq12YR66YlaspmB93BeuPcVVfLR2\r\nlP3SOo0G9RWwvcmITwqRKE3KXlElcZjMlhfbDiYiVo8uOMtZWKBo+FXL8/mZ\r\nqMNriUw6zS3fhxSMLODjtunnWiTC9ri62Ao7F5Mcyj+6FNYH3+Ia7lF5MAza\r\nKj8v6wa+YvApMPjgAfHP5MaxLHH3NboJo16B2sfvHHGIzAoGTTsZspOmpjSB\r\n769hFvjVj1zTSAUDnBxtxDs87Gw1N+5EvBFSv3ftO+8H58qHTrGillvQ/H4c\r\nywlLOeHqe6adJfs9iVY8qTkQBiZShYrYxf8=\r\n=4i44\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.86_1662685798620_0.039889143736455024"},"_hasShrinkwrap":false},"1.2.55":{"name":"@leanup/cli","version":"1.2.55","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.57","@types/prettier":"2.7.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.55","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-m1zvEIQ4XJWA6wSFioTLk2tv96QXXm6xHYF+NgCZLfeHRoIuFQ3osoaiIwvebr+g4+Cz76qQeFP8/X2skO1hZQ==","shasum":"dc76d7e32d81a3014967d719e91f3ea2f853acf7","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.55.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCceRCd2z8VhdNFhs9xUsRx4PgGRPUVQ2hMdob5dGKJ1QIgWa0qAeK5rue4iws/0Ebf/4fUh2KG9QQ2V1SimjTbCpg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGpKdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqUhBAAicgssMYz3Y++SlfxrTJATUkBf6LtaoAgkbkgCoMY4to6cQWJ\r\n/uC9hlDTAxBd7mIL238PuHn41T8uQ4C2EWywDQP7uhwiOIWt2XnaQCiajsp+\r\n/ns/iU8Okrg5XUGYnpHU0l1DCdmp1iAPbRSrEe2rXu3C3Ydnv+qHWUSpWUDb\r\nfG3Ye+VHo3Sf2oyBl092MJulzmsP85LesxVMnwSrQQI/XyWFhyn5XSTqzUvF\r\nYFZXbrV3phWrg+Fh7ALV3V8aNWuoajeaykeoxXiC4rmThpl8ZNTUKHAnPC0R\r\nr8zvyWzzd/HDa+YwUs++DedwBnOvE5zXefI300LrsPA1LVLGO9ZaO9TMfRuE\r\nGvEyBtFCdOwS7ycsW9eKl7NipzNJyuUOyYc5ovm7nxuaCIzteLKOvzIx4ukv\r\nwplNe4hj2ghLrm710/H+n9F2yuyYxmoShAKnocHgenIfxHmfO4dMRqhoJRbR\r\nLpqq3lx9KAyKGo0Y3IgKg2fUQfv7fcxHwtaY5sL3m+QHxL3OsLvDx92n61LG\r\nlhoy5F2YBuJstKMd1iCghc+nCEuYFYfvqtv0heR3OSzweQMWfrqOgzcCvmAv\r\nwD0U48y++xvFTrUZ7nXgKhBabH+gXzW7GaPJqWk9mJOnZNjXKKxhtGXjy9GE\r\nEAHG10NHUcW/FUSMoS/jId5RDu0Vh4kbzoY=\r\n=7sj3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.55_1662685852883_0.6929173748802082"},"_hasShrinkwrap":false},"1.0.193":{"name":"@leanup/cli","version":"1.0.193","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.19.0","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.19.0","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.19.0","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.193","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.193","@leanup/cli-core-test":"1.0.193","autoprefixer":"10.4.10","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.16","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.9","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.193","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-HsgrnNra3u+MwTG5/gK5W+khGu1T7Fa2Lyqh5/4qYRrAdwCMVIJy8hq2KDyGzjWOe9TCL2/a0vJPyKmvVucgVg==","shasum":"eaf2ff6c110a11df329634ee64484e2c90284f83","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.193.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEPRKTVBO3hWyherRn8rKte18IsDpzv1951BMHOhtRHNAiB++jP2bAtRBgQM2pOEevLxr4yM3xLRom0PIX156COkYQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI9uIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0nA//Ri4FSiAg8RVg4WJQWoQike2Y1N6ZUgK0INo1KUNPoa8Z7geb\r\nSZJpMo54erI6zuZdIWmTOAyWHE8Yph9qSYcfCIro0rHzvTIIdpG5NggT7Zh6\r\nIKaRwT5YXtgveDgYZKgOUVUsy8wxG8teJvlfCP0QTqfQPdCVDYK2YENWYYxJ\r\nzIO9/cDSZtJR2F9oCWRtPa6XiN2s0Q7vQisgiSS/SQdyekteXUNjOhQHd1tw\r\nTPhw4MVUeRxRKpAXq1az5YWXQj980RC7U7nF5B0W8anH0V0J5Mj6MmY1SUex\r\n4QI/XPGLic4gr188I5LN60yGt5q5BNsKRlUp+oeWX40+f35jcolgJoQN4N/z\r\nrkkh4rHRlYuL7PZNI4yxSK3Y/oGiT0wOLUXym90QFg+wn842LTV0JYg73MKe\r\nZhPXJn77Z5/H2ah0JTOfIY6Ioimq1Itq+y68FTNQMt/9hA9vD1kYznv/o9pa\r\n6ogj8BE6BDnrgN7L7ei+3iKvmFLykIcV/BU+vLAR+1WT5N5vyBXt7apZfetH\r\nDC8hGMysvA/JJNHxQacsRvnIAUo+PavJyiUpCt4hig8eoClHX2IudTdGcfp5\r\n/yOc25eCjWzuK2bId3G2JNIcbqipyvNils1C2j/Z0wBejGXL1guxabXIofg5\r\nNOU7qcjoLjjPNm/DDXse4sW5HEgIx3hArH0=\r\n=Um8h\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.193_1663294344606_0.1750628704804733"},"_hasShrinkwrap":false},"1.1.87":{"name":"@leanup/cli","version":"1.1.87","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.59","@types/prettier":"2.7.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.87","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-oplLrO7lx9NCqtDaXJFWjM3zN6Ihd2Sa06TylI5cvapoS6hyZtlnFSNCCEp6sMZnVtosUbFEaoj1qclE5QFJvA==","shasum":"e68ca69285419e431a050eb5322985979da73604","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.87.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfe272hhyJC2pUJZnvqGirYERH4d8qEPLZoT9BdX4zIQIhAPRbuGlflaZjJOcHTY5M6BLNOo1miR7t4lYoSy9Vray1"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI9uxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr8SBAAkPgQjavzBUI3YzzOJtMp+rrN3XvgiL+d9xKU7gmUWV5EGh6x\r\nt6ZsHpHvW08IV8fYSqyrKPcUglRpgb/MUMeCLWDwgW0gyGvxrw2kbtDQi7FF\r\nZ9eoZImusFIUnX71bOgzcEOP5bImVL2uTgTN3Hu9qI3ozrf0dBr/G+wmqN4t\r\n47+1ipxBc/Yjr1PPZuvtZyckOWzbSmeR7GMcG3yLJIjY57xgCKHfCspWqUAW\r\nmVRcQtq5qXWkvcWh00+1qSO5m2GPwI3uYEWIuvtdn00jy7+8ZGJgqPgXB/RM\r\n/5wB3oWg9DBo7VQkYM5X55QT/i4jp7CSxHlqwX5uoWIIPgGiF3RaJTVa3XY3\r\nFVZMY+72NYnIlRXXbiT4a3gnUE0nanPOYAdcDhKdt8xrjTEgU2jOWLCKpYqK\r\n864Mj7DaosdGkxYkMDD3Y1DICl6axA9ZEbysrKYN8ymzH7NGVcGGY1Dsw+OT\r\nHUw+H3A8duAo7Y2/Mq4D06mqUnqQDz96BWHcI0XKPYo7HVNtGZ61PFClzw6s\r\nF9cbj6982j7if4fkRd5y8WYFR6jnXq90LshaDizlJJZ50LQZNYJgxThAD23J\r\ndTnvybnS0u2pG5+z9rHtB+JWwPl4uCtkG+8sNdBzthK4ewAotJE8oyjiklwd\r\n4GZmh6el2+QFExYhW8VsPM5QfXZzrurWgws=\r\n=N1uF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.87_1663294385735_0.5475938201302948"},"_hasShrinkwrap":false},"1.3.34":{"name":"@leanup/cli","version":"1.3.34","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.34","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Wz9tAPf7686VJ/VZCWKSumQ58eROUYSwijrbNQrIvJ6uyEEg8jfJ05kMXKiw74+guSEkwAVanREMqKKrpp+aCg==","shasum":"7697f3ccbcab8a42f163e5629ddefbfd8fee99e2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.34.tgz","fileCount":63,"unpackedSize":140025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF2rI94oyiWBio2ujMiZoQ7+kDkvBDQJSyFk6V6m3iyqAiAIv+Tpi/4UfmnT0mvLrtup4cF7TNJM9HrxrItguVgk+A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI9vcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqmfw//Yixri8qV4mW8IAyfyY6ZQbwqEEbIFz0fcC0jlz06yg6yuDqh\r\nFqP4D6cxwlIuNL0WEXRe7aLMbCy6/xHiVJjvlTkDC2Np921/dkNVdsyvend5\r\nkmtPur6RvNNBDuAJ2uMsQ+QhnhVZQph+rUME7OWbauHWFI1sl3eVwcPujOjn\r\neby2sfgzit4+Ch+VjcMr634fzTGfagei/LFyHEzefdFNrk+ZM0RBxc9SedMS\r\ni+Zwf5p9eOPJfTHaCeT0NP+QKHZesQDid+U5UWOEbvHWvKfszj0fG0Iw1ge1\r\nr3JMLNSOmZTFL00YvewQQJm2dbgyvAox1UJUC5DeSOSogP3GypjnE3z/Cr5j\r\n6aFgdcrFjx856Ry17Vs6X/iHo5Fpet+tXJlW7RHvgyn+xzEvKq3EyhRCLGf0\r\nwObHaeQi+C+N9u/fzTGB+7C4KRzzi4MCnIjeBWGGQ8esocMVYGzcfdAbH6sy\r\n5/El7uKM4OzNeB9qLjBfDInM2SRWgkc3FXAlpow1YV3bvlyV4EbVoh2rxJL9\r\nthWKMtdGJat9TOD/KyrB0wpmb2A/Z5Fm1uY80RTXI6b73QgugWVopZGrUG+V\r\nqe3AykxH7WaEfEoZIAQIjCiwgE+9gTpsNCdDL5AmIhGMTk/Zd7jRaEl10jnW\r\nA8ULhJyDw4G7WhCubh4j8OX+lkbgGyWVKa0=\r\n=m51r\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.34_1663294427956_0.5420758475091885"},"_hasShrinkwrap":false},"1.2.56":{"name":"@leanup/cli","version":"1.2.56","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.59","@types/prettier":"2.7.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.56","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-hLs8hkcbwdNDAfsx5RqJf/aAXIvU3vKsd2NMTwhb972LHU3dhWatMw+PnnvnyvruZAljJcsmIeDB2J2agfdJXA==","shasum":"4412eecd663ed48085acd951af45b66164660f9d","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.56.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpTgOUDtevZdOkKk+/IFSrnGSXTPDko6QObZ68ZRz/YQIhAOD/Axt36EHmxjazXBrRgxAmK1rOQdgIU8GuaMcifYCJ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI9xEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoh9g//ZqRJxTLKXg7Rq5DOgUiGL5tK9FA3FRQMtFme4rhFtfrOdM3H\r\nZ8a9YOUZ693yUJPMwdCvFzjfiULcR0h/CTgrI8Egy9Um8Iike7GQ2BgHitC1\r\n/4KBi0HrfQLdZ+/U+31aYEoYQsZBLyYaJN35xkvT7GrisF1EuF5gqoqF7bnb\r\nZs0jb0zTSrySkxNV2FA+mYHY1e73ds6huA5x2YmOR1/lrI6upwGP3rcopslf\r\nehhL29zdQI9mDvqjyMb2Zbo2S4dHu5wkpQELyuhrgPre/CXYLr4WyM2ukuDD\r\n63DgXiEy2sLy1xu4JR8FI7gt0nTwXj1HM+SXI4e8dvDkSECRMD73BnUtUvgS\r\nyj0RSHQ0ILG5fezzLnXUviqUCBnBLakY6v7hH+9Uw378fLLGFHaFobNbXeZo\r\ni4Gn1ZSYfD1lj/8Mm6PgheAdKbQ/MTvAbxW5mZowhwvve+bloGO8r80w9EZB\r\nJhYGjaaPpfSujsxa6zrUPyHcYTPZFOlG8ZWriYSxSTVwG6pThD1PrMY6RHCF\r\n1PR8MRJ4Ud53Jt6r9UY7LPLuN1iXw2dFcq7QaGpLVDy7pEUEHgGNCRwxQCxx\r\n4lADxy7sQig0d3CQaDTGZMI1itet9O/k5yL1aAazaETw5XQuYPS0QtjMJcov\r\nQ4nvas+PeyGMHhxrriG5j94yvIvJLcTV4qw=\r\n=xGkR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.56_1663294532402_0.8879070338395314"},"_hasShrinkwrap":false},"1.0.194":{"name":"@leanup/cli","version":"1.0.194","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.19.1","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.19.1","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.19.1","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.194","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.194","@leanup/cli-core-test":"1.0.194","autoprefixer":"10.4.12","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.16","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.54.9","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.194","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-OcFIi9kUxlWO+aHMizcmLfF1QMMmCalJfXOClP7o7nzSOZILT2Hbz4S/bDQW15ElCRieVwAFWZE1umwZJCXS0g==","shasum":"cb57855e7fb8296a073f5bd0ced2b7063237042b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.194.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFoB5pWJLVcvXTEeTZRMBqYu3fmkOUCffJKu7UNSoieJAiEA5RKAkq+Q3vHmNYwIoX20tFjpzSux8zpTcfBGwaDfJ/c="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLpW9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoFjBAAh65+w8MW+zDd9SKGe3xFrmInwizELFtkK1hgKhH5f/AwxBFl\r\nv0hWhhG8Uq4w46WoX3klAyqP3XD+YLjiEyCRiOXoxhkSqx2sEp54CnUqoG2b\r\nDzP6Z1YLhw9Ih+3tWK7/dzzMQOmryaw9AFjx5vnC/MqjgDcw627RgELEMB+i\r\nV1ac56W9hWIPcX9wKwDQ39+HgH4gRq/urZI1tLEVlZl09T7BJgHhLVEtT0yF\r\nDo1sl8skeVwVqhIEAx5PYYpsHxIQmxZKjgNTyXIqSI77dtMq1ejHkpLIte6X\r\nj0bBb4J5SrLInzDJhvzO+lMFuj2IguspAMWBvXLsEzt6aN3NKDRkJOOcjue3\r\nrrBB/qAVvobakO3PhzKWtnLQiINZgQAG4JV4Yl1Wdxe+IHDHQUzo+AVHepC6\r\nX15eaVs9sRizZrRQeQTLow4ZmA7/YtW9wEEZNEGfywEd8JpRrqoRC3SnIga7\r\n5R1T0cjsewo4AtS3pNtX1B7F0QuveARHEkiNcRBh+xvVa63+VQngHVzx3nYV\r\nt+vrF0y6aMUi4Ddi8hDCYC+9cXSEM2uGUhTNaBn3qijf5Zr4TKxteVUh6vFd\r\nKwmn2ICVgsHcs7LO/3aUust4g9JLdxSVDCqrDXtBmGqKam5l6dPT5s3jqljZ\r\nPkiu2vm6zHxQsD+fy3t8uyhj51cQxhaGYaM=\r\n=2aYI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.194_1663997373631_0.7911003357050581"},"_hasShrinkwrap":false},"1.1.88":{"name":"@leanup/cli","version":"1.1.88","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.59","@types/prettier":"2.7.0","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.88","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-C4+W1PU0vEkCdh/IRM8U9lhGislsXt0s7spjYNj/ES2N+OVcvO8Rb0yGu3oJCgaUD7M6es4PwiA2UNKhNVg/DQ==","shasum":"34bca196f83823d2d93ff617f479c4d3f7849a65","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.88.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC64PWrSg+WV5n26dcsexeYk1HoOFPmqHpk7jNYqyON7gIhAKKTY81CPIhFlLk9OlqKuRy2n2qQyJfF8HGcF+oH8yRF"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLpXnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoIMQ/+No+v4CcUKdgBmM396i7xZH5YmeoCI8BN+gU1HDqcZEGacg1L\r\nEg3cCwoDTcPF5homfSfSTrH/7zd0Fvq4GSb45XRxoyx9DHA0ScP9tAARv6em\r\npn2Fm+4uGA6QwP9FtDDG+H+g1UGDsldcrCaffaBr0nUC3FZ2Mez7K1NG5Ozx\r\nFDMeR98Vmu5W/zxPAHsSsJ1uDkT7kZ8vTCf4Ufd1wUZ95W5AaJ3SrF5bFUdZ\r\n2bQnu4YwK3201t5JetHxrS8AfqdSLXWrwDVgkv9ru/ShpjyQQHX4b+wcVL2o\r\nQFwI32ujyzF+MmoMUG3s7FaT2uo2I3mvCu+aPZL/jH9XzusfYyLJUXZgLVRV\r\nF8HnCfPVpQODRjTwgbCMAhmXyc3F4QUVRYvpZfy13rLjI26FPPIfxRynSJHS\r\n+522ayF1VWd9wwx/t7SrHGoK/GjIpMVF5Kh6QFuxOWg8aFwWLCeY+UMs4Qh6\r\n+nf9FfLOtQBsidY9r9tVcdlyBJMNYLgP/imLJCtTFtCKND6bg5VfC6c9G4Fg\r\n8LYV8dfbwJ0p/VtwjIbu9FhIGq2+WBM4UughF1FxdXeZkwfkfU+KgSTvahkx\r\nF9rMY7cvMT/bR0AmePcNp5FlP/Be8pe/riZfDRWuV2QvlNyM8gBWqDZTjYT6\r\nRnxSXi0BXQMUO7mDImOJRZw1zb1Luo4V1CA=\r\n=JRex\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.88_1663997415068_0.5710793213980516"},"_hasShrinkwrap":false},"2.0.0-rc.73":{"name":"@leanup/cli","version":"2.0.0-rc.73","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"18.7.14","@types/prettier":"2.7.0","rimraf":"3.0.2","typescript":"4.8.3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rimraf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"# @leanup/cli\n\n> ⚠️ Uses this package [create-leanup](https://www.npmjs.com/package/create-leanup) instead, because this package is deprecated: <https://leanupjs.org/2.0/guide/migration/>\n","readmeFilename":"README.md","gitHead":"41a51580255624799db98452c73b3e1c5767ddb0","_id":"@leanup/cli@2.0.0-rc.73","_nodeVersion":"18.9.0","_npmVersion":"8.19.1","dist":{"integrity":"sha512-VgPKSWaZsfkvkmNU6a2jM71+vK5Uu3YBVe88Pssmu8HF40TMLZGL13bIn+oHlZK7GCTkasirHurww/9tEtkRlQ==","shasum":"d3fa400185bfca46f04171b5f68059e3da468819","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-2.0.0-rc.73.tgz","fileCount":64,"unpackedSize":100643,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIqRMSQXU+Bvwx08yyX6uQS3ptSYWwrSVjIkCrIJQLqQIgMVABU6E5acRTu6fHT1i2a0CGXiS7eGL4uk5Vefl58IY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLpYEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqtRQ/9HM1tvu9aZolf0t2FTytoZNio/ES1M9lPiN+5Pc7LHsdyA14V\r\nR2HVkosweuxpg7FDa8us2RxuQGyKBKSuvNpTNHnTu/R5ksrX4dpKZ9MirfA1\r\npYaDi6HQ5oFhvjeWFxnVETAm0g4zFvUHaujvT24Kxel420L17cIE+MMGt34G\r\nx8jDjC4zIEs72QRlAgwIDQwNniRnYQVUf2M40IEUwQJ2Gzo/3ZECOq7W3Id0\r\nS6GY95ERK1tTITy8W15pRgq5fFyQPtD6n5wCDHeJTO9pw1g5QTynISlPXkBL\r\n0g/gy3G3v26EeYcR8le+Dx0qMd8pm1Qyzr8qioPOuoCTj5thZlwEkYyv179C\r\npuWv9hMtiXGikql6uJMF59/HkjX51ZeZGx/bmhBqDomv1fVejA6RjmlQ1dWf\r\nRoLnxW3bEpSYbE3kf5joxRJu8Mu+OJQ5IKD72UuG1rbv8skdz8EvaFDp5q8V\r\nI23aOz0S7iW1YiOVZwb8Az7dt6bS8jdxqf1bFQrOPsftCw2mLGadPPMeA48h\r\n1o1rR14oCqteiUj9uG18Get6RA6yMwpXGQOJDJfj5wRLlxYGWtkjRpdexnVi\r\n7PN3+XXNkFTWJvOVJ0bOs/kdgrpvnarRRureVDt+P7jdveGnBko914s2ZsRE\r\nmH7ntVSaHxar67labso+6Fl2Bk6z+mAT8Cc=\r\n=Mzhh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_2.0.0-rc.73_1663997444354_0.5245830628835022"},"_hasShrinkwrap":false},"1.2.57":{"name":"@leanup/cli","version":"1.2.57","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.59","@types/prettier":"2.7.0","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.57","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-bkapfPMHK9CyZRWakV0PkIY2LKkHEgWIe9kB77qRNEqrrI/rRGjiBqd/uQNsul1/drYoOuW5qRQRc5nkiNKJ7Q==","shasum":"9719d5c49ffbfae607eb78566a12dc9621c60de3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.57.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDERCH56Rc1dPMmIWhbkbQBCbK/DhuXd4XL8akm6JdQsAIhAIThsLX6BCusNFIQhkIPL5cQq9FTx2spknXQfbsVmluh"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLpYVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoChA/5ADyhPI5KJf9Z7Q/AhTUUkPQas2Asog7AOn9Cec5i3MjAi/th\r\n1dP3yr3Y4iMU+idbnFbLmJauXJ90CTK8ndDSk28iOSnsMtpZaM/ZVatmNQCY\r\nELpSpCYG8eu5Tm8pn2jAjWkTtuXCiUiSfWTRMI0uNmHjTwryfMWQAF8hvJN+\r\nzIfNgLxRZhjHYbJ1A/WHQLouFbikL/As7lGfIZ5HUQQN2wmw1q1PM/qHjLSo\r\nLwKoqCT8dQrNoBW9LgAKxFczZ9znqfn5swScqNSq9sd766RqugjZOybO65tf\r\nZBnwmfSpSDAK4y0IDfKUamktTvwbxdvu5CgLRuW99cC6sKEB7gbCd6U1dL10\r\nSYtek3/o5rbj1TmQ5IFp6z/cOdedjFUzHcd2NBz9c21IFXCJ/WLDwPpf5jO/\r\nsL4EN6YvJdVsh34iuZpxzB9wHQImWS1861YmlIt6/uIc1Owg5jCjs37Q+Mwe\r\n6RYnUQYYaqQzilq6FmaDFQYma0Xs6CHiYPLKN/f34R7G+ErvHY9aLt2OzGcL\r\nZL2meACiyoo5LmEQzvIDRPWM62CTdvlR2xe5uSw6pSzqK/BYCTt+O3EoLESb\r\ne4sQ/RAChSmI2TSIv2gTWyOdcjzfkQWT1b3h+jAzcgrr+gIpjBQ6g/aMlEfm\r\nu8Iu66b5AxtcVCl1kRfRwf4ky1qnuVV4Ztw=\r\n=MmXR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.57_1663997461271_0.13318122209630112"},"_hasShrinkwrap":false},"1.3.35":{"name":"@leanup/cli","version":"1.3.35","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.0","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.35","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-oGbqCfFtPBFtrxVyPnCST/AU6tLnTjm2HP3inxguAbYAABEwb92JTSVgjsXtGv+R4hPOG2QRBdINBNqHQm47NQ==","shasum":"392bc4c2a047ae711de984f780c50f4159bddbd9","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.35.tgz","fileCount":63,"unpackedSize":140025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+uJyLjlEU4BUd1hTzNj54xxRdN2RCz37skS0Z1GjnCAiEA+4IWuOK6fTIQe2+KWcKKa1HGG/XKvF9jmMM7is1OfiI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjLpZMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqlhA//c3GzEgp0xakLRI0rEhB04zZsbz8udWNlcds6yGxIFS0WDxk3\r\nmL64/pg4k7EvhZlMCnkITntpoZcTaaMCi5MlfcNg6khgX4AKtkgZXSTJdYfw\r\nc/bUlB0EFh5ZHv+gmpLgQLXrDTinleG8GchuuWFTfLHNT6LfTBv9rFh7loMj\r\nIRmfdUffVkZ0Jmc4eJwrPRt4o3YMcXXmQR5ia7HRi8Z0P6ftMh3W4gf0X6ht\r\nzrFL8m82lWzoNmKpU9cpEZhDFB+0jWUoDCnrHO8BW5CRQJO6ezNaFkmCGaRt\r\nSeWKm3e9LcVslBF726slqgrWAZClX0ZFvgjmGytV+5sT6m3/8OvpTAT22nta\r\nj9hLEpr9tPAqeFLA7oo35QRAEukO1mNWbIxdJvY2TyyNaKKwuzhtIrWqzZAB\r\nQTrn37WL9AhlUvEnXNGMvgLSO7GQlJ8ow/0903z90yfujHBTrQwkmW9IdQHb\r\nR9Y/cITmGdgui3hEeL6gdg332MgND1yRMWJmCuZebf2T3xyWdgA+qKl3jlBR\r\nOp/nCwRsLtmndnkk6SwBUgYO/nhkzKJacJ8chhmSpDFmGGR7gNoCxUCgQPmQ\r\nPQ2PJ2PyAC29iIHE+i6BPMNFZuXGgK9SXQUMVG9cdj+MxCsNTSmwGNc+lG9E\r\nsb9TyqKpKIbqV5f0qgl9AeUauiP/ZQNdv1k=\r\n=5bH0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.35_1663997516492_0.23181290730539073"},"_hasShrinkwrap":false},"1.0.195":{"name":"@leanup/cli","version":"1.0.195","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.19.3","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.19.3","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.19.3","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.195","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.194","@leanup/cli-core-test":"1.0.195","autoprefixer":"10.4.12","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.16","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.55.0","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.195","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-RMPl+72XCEE/hfP3C6gxD7GwYqKrRXM120OWDvsxccBLUayDua7AxlOS0CmQs6ZkZsirc0VUz09YjqHyJ6pwtQ==","shasum":"a827ff78ed167ce4d9e8424ca7aa16a37253f6e3","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.195.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLIXZnFnRw84Y/BLOwX5IHIi868q+pbTqrJKxv/JHT/gIhAMqPFBlY0XsAqiV3nCGtZeJLMgWh8su0c4fFi49uzpt+"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPQVbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrNNA//RGKyDhFCZQKCEfPKMVtTJGBFYjtvQBooFsUzg1rLp33B+R8e\r\nRhW8OSYKQsjyF0gIKPgSw4CSwqeOr1jN2EMVmYxV58VY/9sQPAcpeLEOFlXE\r\nIbcz2S5n7d5Y2cK5WtK9iyhk57hvfK7jKA0uKpeqfCh3O72Yj9zPaiM83S2Z\r\nY86DBIWwYXH7+hpgrc6vk5FHMHhX+zsHyfah8sofKTtxSau80s2sR0tkqzts\r\nEJM5kOYAxmxj+189CRnvZxkOQXXaIOcRdZRMfIWl0kPBRLvNyqghwqvWsjAt\r\nz9uTzoSBZSg0AkJXHdvXIp1X5wkUpDdB48mWFI1z8pGbBmE5yYBxW/Y8bnM4\r\nrXgiBpoUqGJmoiwL7fGNB6/jO43yeqUJCmWiKN17/RiXQ4n64/mwtK83FuHd\r\n9MswWEQGZirmF2RtDeItrqrMCONWKE7ENf1RCc3RA/sFJYJ/LLYqowJDTQih\r\nO5rqXnb/Y4ssO0L/raJXWvzVk13vxru1MFUKnehb+wNXlh/zStqb3jBtvscB\r\ntxyXvR+/kM4KU/jpMMTe0Zxzr5rs+5wS6NUzuwzew80qbBKTu+N91Qg7CMkb\r\nD4hqEXjgNsfs2Caj3/KSlXuztKg3WpW/Sd1j6tB1g/u0OnJyyI5EvR+nvrh4\r\nncW1HWDJJVCjV99VrX/RvQojY4hVZ0mePwA=\r\n=zLBU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.195_1664943451239_0.47618886487841605"},"_hasShrinkwrap":false},"1.1.89":{"name":"@leanup/cli","version":"1.1.89","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.62","@types/prettier":"2.7.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.89","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-QDEaTqgXdsY1roW87mW+u1QA7b5TzyIZu28YYJAt3vTEj9OlwEAuysU48PZK7LRipU5ccr/B6XcAuVHN9GUy+w==","shasum":"5f343a74d758b15d40298696d8c7f5a84b108c69","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.89.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDaglGeUw+2/KM+rT6Zjyd+CMZXyuxdPkfTIdjxagaZpAiAPtZzzJUH33mGy0WPhn2BknG1gcDaCympYLm4H59DiCw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPQWRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpOjg//W2mDeiLXsMTXOkI6hG2uT3h26IpvX4u9tPNUq8/SeXr/npu4\r\ntEPsCrqA9ByTgq+9j2KVTdpCukthTi2JTEUx640lLFWDEyoT5IwgqRATiVdN\r\nScgP2n0bRqF06ApygPgFLJS/iMe2I9n93EcUnaaXuJB2o+sbp/jCb4oOPQqn\r\nJxJAQ/yIAG9o09EX0WQs7kHBEnWojG+SdSrLkRPAzK1p4KXySIXR74aU7QaM\r\nxvebtC/eur9QDB+nTP9uXl47/IY82nCJB0IxRJafYfSy/1OgQWtQB2Av23zI\r\nvCEG0na9TO8TkZlxTp42NagozDnO4gQbI/aH7pvGFUmE+DNS9izD4w8n6IB1\r\n01FS/Ws9rLVUAm5FzT030O1+fE8Vb51dLOj7NIzEt6jNkatIQXLVjfNhjRQ7\r\ndN79J91GOt2MMDsTyJRoNgZN/5ZY96wWuhU+CB1M6XJNFMaxigQTzIjjVfdt\r\numOmvvGsiUpYwF+5aUj2RzUtNr4RCVMH9Q6qjHBRV7/7Nu2+E6VZscx6T558\r\ndws0voE0WaDQ2AiTGkiwJ+OZtuR08ktinKHYOlFBm4M3JwAezOE54olG4dhf\r\nqaNwZoNdCzwRY5p9U0XniBU4P3JCD/NmFtN95rh6vtL7L+MiNzCCLDJ87ZQA\r\nc0UZ+QeOeQUCeCsBRN9uMBFe0MOtLwDB3Ys=\r\n=SoJF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.89_1664943505364_0.24974038521436492"},"_hasShrinkwrap":false},"1.3.36":{"name":"@leanup/cli","version":"1.3.36","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.1","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.36","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-iIf86SBOsbQ0CuqFTk4NPAyXgCXwx9ZJkZ3UaTFgdpp1um/WIQm+M04dHOM0uSr5E0oP+vT4Ss5Ge2Qc7KJ5CQ==","shasum":"1d915d5d94e0f32d19e988c096752eaaee8a450f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.36.tgz","fileCount":63,"unpackedSize":140025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDww6zK4TzYONlbhYfJhW8ii6De0dpZHcE2d3urMPK8pAiA415qmJ/XkRZvTfVKd08VY9AoR3WmQsy8c5sqpzl9WWA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPQXZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpDCBAAiKatoP5AtDyUaDyu3wuHrUP0moO/dYMJA1BDk6V6VITzY0Nb\r\nhdRZiZ8jqKsYcKprRFtxaS7NDR0YmixKj8xHFFfMBo5uDRwGxYBqUVU+kDIg\r\nFeZSuKWz0Q2UbaqWvDIv+WOksgU9XmPU3lU1mMb4QzgchLSqj50dpZdw0g5w\r\nLIxgLkQFd6NAKxNDQQy7hk/2VDazgbaKvhFDqIPmPAIAXGNrCm3o+dRAv6/D\r\nU3UJbm7wsCqpaG19wsch+uGn4i4Ef6xdwwwKMcLHZlexqNhvWWb1Win7fU+v\r\nA/eTiE4ufBe6FIOFp4H9ZYhKYor2scJEoO/Wf0RHs+Aoobe5teao+ga5tTU4\r\nsLh//qXI7mxU7TUszj0reO7vjOvt7RezHk6L/Em+oMQgM23MeLGBkbxbReCT\r\nWy9kW9AbHokqj5oYzcmC8UVL4yMVHO4v9ewYTK6WU48EjMJ4DeeCUMflXjtf\r\nE9NhIrBBhSe9L0Og8IjPJqf64oochxTvQC7qS6A6s52uOqiG6HCpuQOi4PfS\r\nAAmlOpcrPCgGuBFhqfs0wpl3oFAwKmMAhFkgoRfJAyXN386v5t0bA83vFrJQ\r\nvtjIvLh8wei8NmDuoErZK0kB+5tGvwfA89XzHiIENNM8WMJT2rk0OKzAO1Oe\r\nIATNmIo9qfx7gP9mlu9n3rhteDSrLpzem5A=\r\n=5tDS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.36_1664943577175_0.8328271827831242"},"_hasShrinkwrap":false},"1.2.58":{"name":"@leanup/cli","version":"1.2.58","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.62","@types/prettier":"2.7.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.58","_nodeVersion":"14.20.0","_npmVersion":"6.14.17","dist":{"integrity":"sha512-8+YRTx0eB0WYjmR5jftoxY4nwFECzKOj1CkCTk+hi7yxF1amjIv1l6FA8pjBrIF8Pw9NNA/AIXvr3t4Ca3+/uw==","shasum":"1f48af47b0be955b5705c8bb84ae72f738eec135","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.58.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCO4V6JGzf1eqF+OFfvYP7QTv0IFZEM8IrrjoRQofo5mwIhAOgfJkskJIlAnJ2KvC7fHlERejku7FXT1igTyMP4sbuU"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjPQcpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrP3xAAideBqsP8fLhpD4J2qE1DBUPA0M8gzJD7GhC1qeeCjgcCoc+c\r\nVARM5gaSfDEdGnB/GasP70+Z7UwyfV/PYrlYl7f2Wbo/zIA7MJ+SDNdESCBZ\r\nmql0TqVtxt6iB9CBOBSE9vVYb1Ignyzi9phWLma8fAE+qRlhZ+ghw/b39dHe\r\nMYwc3waFIxxwRq5ErUEeZQGCnj6oc7aovZf8I/i9/glXRkmZeUrzZL2mHJH7\r\nn0v55/mVnfvjQduvOhaO4bJugWxZd+xJTkiUnPszwEEGFrTf2+s29u67FOBL\r\nVrjlXTBmCIsjh+e5theBOQ+vntw0+bvig1kUIEGWBP9u+W4Y+4pR9ybiJ60K\r\nZE6q4AWnxIxKph7qBtQVLr0ytaAtu31iWCJmdb1Y+SG9xGOy7bvEa9Zl/+uv\r\nY8B6euSEGIAOjzr3A3WM8YAntJ78GcWCPXMGw1DbZW2d0VlOoCgy1qquTdF4\r\nfiJ4NewJ5GZNAL/XUJuc0TkVViCe+wkXfu+sKBKr85Bd2dsqlvGLe6cjjMR8\r\nqlT6og7D62XYSm2xupV7cbfATOjKRHmtMLhVRfKz1+8A4rrSTVaQ7auez6oq\r\noMVuoYeTNAsBKBLAzzUxDnKo4mUXtI0Z6l8vB/UuQWs0lJoKlEUVbTvNQnAA\r\n4Yc9NmnLG5cyUtCsfJy3Ufc38OE9MM1+64Q=\r\n=Wdtk\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.58_1664943913616_0.01866416842186136"},"_hasShrinkwrap":false},"1.0.196":{"name":"@leanup/cli","version":"1.0.196","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.19.3","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.19.3","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.19.4","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.196","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.196","@leanup/cli-core-test":"1.0.196","autoprefixer":"10.4.12","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.18","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.55.0","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.196","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-aOLRwg+67ea51SZxWoh5NdeoVqZ34wbjTkPO4bSCtH4zdwSs2Rl9Q6PTcsoisDEzgijohCIiOqbHGogBly7zgg==","shasum":"ab19eb43ba0e5cd911a9752746262feaad4462a2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.196.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmfzNLhIDXGUUA0m4fHL7sHp/DgEatZSp7bvDjPLN2aAiBfx1W/C0VfnMfk9DaQTKaP/LqLvA2kUeVh56h6eGEqVQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR4eHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmouaQ//cMXUgr6nHtJjZZ8aTlk8AdM1iLYkpVPhIO6L0VEPf8IEIBhZ\r\nWkSg7yZ7c/WHxiKpa8eOSRXpvWjqO81llEB8Puo421F3oHyUtAoz/imp9FvL\r\nn0TrqAEXu1dw2Glka1FYaPLPp/hlqTMCnNl7tVmq1/5xR+Jh+mlL91uiJ390\r\nbWB+vhG7i+6EaKZlVlxqp3AGSyPwpwxAmw8qLpeddNnzkU+5/hx6sUjnM78N\r\nRnL0MQdUZauP69jmoScjWqrCAu3jl8aaaDQIGTW9U3PVF/+b0unTPtRDyTpc\r\nAMzpSeTXhDLQBo8m37BuzlpwwrlcXbn/fgFBmaucycGnSlPjratiKoyxxLwd\r\nmanhivNDQijsP/turoBptw8FHvUQ00zQBs+48SZlqZKq0b7CywTDpFxxr6cI\r\nu+/eq+qFOYW+fmELRz9lkcOCrWRK3T0PM92F2/2WQgfjAy0byyz0H0RCoBQ/\r\nK430V+PMGkYV6bTr/1wLwd45jONlSNWIMF0Cjb3upbsWKr4T8w7oYTp/SF+n\r\nqkMrhRshYmBQ3WPltx1sSzejPMmCkvXcWGIWMlNMsz7o/9+ySyhp5aogQHVb\r\ni/ZdLWA6f8a4f7dQgQw/Ljzb3p5s1P1Qcu2UzgAViAX4v7dKz2BNmFDpAbev\r\n7MQ8h2ExspNkLieiL5CeZW1pu0I/K/nQ/yE=\r\n=7mlg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.196_1665632135677_0.2043314917823531"},"_hasShrinkwrap":false},"1.1.90":{"name":"@leanup/cli","version":"1.1.90","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.65","@types/prettier":"2.7.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.90","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-6HSFkhZhlvnzGVKn7HIkraJQUBjvN4sC0zvp5BLQVV3cKzvkdzs1ZoBq0VQNWETlQSZXwvUbeON2PDTU8ElMCQ==","shasum":"12d23f7951454a7c7561386296b39a0bab3d7faa","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.90.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmjy2KuYRyb8QLhXFnK6v9A0QJu/Jl98AGULIZNm+I5gIge2lkL6fwwlw2WpBNIPsL9soKjCR1tRNl6EbqGnPLJXo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR4e8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpHqA//SFUJiS3k1w1iybOXST0gDyO1s4PXACducvgVlcX1pZfT2WCw\r\nzsG4Fw6vV9Tsjit2KxJtsIp+wXZWvUFoVbk4sYqioMX9th2wFEVPZxQA0wd0\r\nbvgIotXkGcIxJycYrsaxZUr0gxdZ7SHwn/J46QsDx4Z2GIl2ZGd4DeMQMwMe\r\nAZpK/0eeSbdU4x/EJaszfVqtv4oa4OVnZ29lngD/Hxkx8Q/J7YHgAncmsGU4\r\n4JMpiackPL+sy4LwHa979UaKqnbomNSuj9qSeUnjQogctWMMx1ft6WyRzXne\r\niPk2+8mQ9+JwS3Z0GyL/BklzeyWfMxK+N36cglkGYDoLUtS4zQF50u36Gmof\r\nSCZElEL+qc3HQJeSNA6W9A8IdUGp6QKqDK1eIbLmOyie2EjuGZvTnlNoyQAT\r\nmjl02GLWXtKYfO0kOS9pujkiXnphvE1BhaCmWpbtE+ITUWf4l5YRhFL5zpti\r\nxQ21O17vCaHd7qw7Tfi9CeaTimnIAI6KtHRocyzttW+Et7a2jtrKa8T6GF5J\r\nYjP592FvgmkZ1V5eRKFyFWo/tS65fvw6KsLbhTnkjC4BEc3DrYo5ZUpA3nf6\r\nAymITOp534hYRsFi3yKNOs3eeamzq5HQzTRtCUjobiSFyypBQu1F/L3BV2bt\r\n4lgU5FYCMDW6yqbYknW0WBuO297QSwsjS30=\r\n=KrgC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.90_1665632188452_0.4938643312887081"},"_hasShrinkwrap":false},"1.3.37":{"name":"@leanup/cli","version":"1.3.37","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.1","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.1","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.37","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Yls/3G2w45ihnCS5bklsysPmELaFUknvvv2HjFxxwB3N6zta42/U/mUavGi/KX+oqA6VQbKwJhZB0kBhaxlikQ==","shasum":"61a73043f5a09d56a22310d75517b551a2da1bbf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.37.tgz","fileCount":63,"unpackedSize":140025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpBzrBUW3iGD5gkcyNrOmqM/Q2Mfiw6UGO6PUe1tl9OgIgMlsyDBZw/O0VAq32Nquu67B64PLmE0VAhcKbFWQJfhs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR4xpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrs/w/+OL2kWqUc1UW28WjXHydFAzPEv4AylL1y+2NQ7FQymrBYei+j\r\n3bPFlHfg13l2Hljo5MnCtUsYJDDfrb/cXtLUNrOOfJxATjQSd2Y/GOQHaoKy\r\nKSMjVLWZSJha1tDpHG+31z316r/YTDgw9u5b4DWG4BvxaRCMUaNt+eAqDNrp\r\nufgN+G27ClHqv4ROHcZ5o757+yPI+L4m7iXEnjfCAio49CK1k92+KnbQEgnx\r\nOBQ0GYhzm/ncRKT8FHmKk60FeEx/aU4y0WDMo3+oDcd1r/3ZCkIF6HCk5jOR\r\n64/4KQfDF+um6i5qP+TZSfwxlc2DGB86Tnv8Nsat6ggu/IPeq8YHma6Iu43M\r\ny9N3+Sy+Bz5euRWe8Wb5sFM+bseSsHwUFXh/+Myek48VJyRR5jHx1VUaz9id\r\nXS9iHHcSpOxaAe1N+uPo257Osp6UDja/52Z+KpVnVUmhiH7Eu11DryLts5Cs\r\nSs7iIjeodvN4EaFDL2rrlZgNNyy86FoRX1dToOCJVxKlt0SJMN4Rp/jm9Aex\r\nyeNIKMsB61T5LQ1rXsGfSgXZV70LydLytdKeCu3hJGrP+qf2DL/LkQRt0J9n\r\nk8/8eE9TFN5I/YH2eHELSB3lqLQNt66UupFe54MpZOGQxr4Zd67oJqnVj7oj\r\nv8jvC1IoHl4GGSxL3cNcaY2o1iHR8m060y8=\r\n=Qrr9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.37_1665633384772_0.8284354309100983"},"_hasShrinkwrap":false},"1.2.59":{"name":"@leanup/cli","version":"1.2.59","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.65","@types/prettier":"2.7.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.59","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-NZFhO2MIXt2Rd885NLmywUVyOSP/Ts4NuScT7yyrjArCW39FSfLX+NtJfbHPbBC2z8ncBXGfLsFv8AF/U+YcjA==","shasum":"766e3cb163e888ab65202e7df32ef0e4a67e69ae","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.59.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDl8FHdEpouhuh4azneMqToIw+HsTv7ZB8F69dXcCPW/wIgcpalWlP88eGfAwc/gkL2ljAD3YjhXovLRKwohgNtdwI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSkGvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpdvA/9FSPdusbPfv5hdtAT6GQDgipqtOGwctkC6VYpExX7G1sjC70W\r\nDgVG5v2I3BO3xypKlKrdSO7QLDXkuCG0ulG58dofVg5+fiaGx/Wr+373JlgE\r\nNimmLW6deHusjQ4Tg48EvXbrKMUAIY+ZI8FqtIqedk5hgZTHDbtmDL86FOGv\r\nK3VQ2sN3iRfo0ZONooE8cMaaNGFxvkClcDa5Wa6ucim2Wrb0XceQfkfw21jf\r\n7RgAcANiMEx3GyIABvTrkAp0qNHTOjMBTM+9hbipgwTC+8C4Jc8rs6vzkqLm\r\nEFp+8Mi9+sZT+apbsCW+x3IMk0aazTRC/zp+fddmlDPferWk9JfMJMcj4doH\r\nz5CQr+E+vR+W7et1+1OYC7jjb/YHmoHaRDKHjMzVZGg30LhG08J8HAHdLukA\r\nXRhxhqBO+oGYlPdtBT1cM2fbhngGCj+HgTm9o9IHz0r7rb+cSq7UiLmzR6+s\r\nKiE+cVTDkN/GhAF51Nz17AzG8EctBmBtR/l1+70LTLC5T+vvfCTnx8Jc7shb\r\ngS++ErJzWD25XyiYW7NBavxPXDQ+8so7L6L/4zBLaLVP4h9DZlRLQsesrDCA\r\nli7mTXwx/UJh0nHx2cmg95TmFaa1bwdJabU1SRN6AYRPyVhiKtp0kp5YnaxJ\r\nKSB32HkxjJHn5k7DJLV3v4NgUim6n/OfG/E=\r\n=LetQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.59_1665810863680_0.022496457186706786"},"_hasShrinkwrap":false},"1.0.197":{"name":"@leanup/cli","version":"1.0.197","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.19.3","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.19.3","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.19.4","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.196","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.196","@leanup/cli-core-test":"1.0.197","autoprefixer":"10.4.12","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.18","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.55.0","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.0","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.197","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-YozOAG8SEY3Q1I//DVnt4FZJTBGILZbVx17GMHfGcyQIqyQiKeWZsNDXSrDIZmfe/KL8n/WpxoQaYnD4MLAm9A==","shasum":"310d74417e39b87d1b1a567472aec300e5c46aad","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.197.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoDOsrZPXh9HmoCfGtznM9XjYn4GUOfnQaH7MJ1BRCmwIhAPp/7XM4yt7HrTTlH+L3UX4oDHFjezQjYg7B4jlLmNDz"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjXpCeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoBCA/+ONn8e0ERVR4SzfA7Kkx57wCvcJ2Uts6nu9oAQp2OvP1Abso5\r\nW/JXH5c47QQs/jhWkYw+wfp7xppKCwVsd1rJ/FYYNa6OxsFijpwwrC9B5kag\r\n5SBwzrGuinXlcx2kqSwKtxRoqdMHOcSvU2LC+rkNrrngV+HIr8VBG/aPWodZ\r\nAWnj6gmqOO7VEODevjpyPEsPT54yPOfN6uGJxn/JNF7e3aeB4Mwtq+bFse2b\r\nVDtMD77/V9Ea7FrdF2YTGsMS5x8r3B5rTcaU7+t5u9ZjM0r/1+uJP40OgyFD\r\n32LA56IIkrQdSlfjuYrkaAenVGBAfMH2Hn7c1UHQJti7zjGOmILPZIMAg7aM\r\n+C3Zcz1V4NEV6x0gnkM+wsuRFITN1u+zqcUQ/y6FHYmJX8xC1p3wHSZP63py\r\nDNg9SQUSp+5vXKxqG8n9GkNtNMh2Ya5/1FbceN9mEtr3yWfBA7ADORg25aHK\r\n2MEWlCo+Y0FBmi7nHR/5ArpbjS+LwusbVsnGwq+cs/77v+jnvKLQk/bxnMiH\r\ngElG9NfBXGVysOKIR037NPrs3XgAWbcvwy1syzjC4RdOA+wlnlyV2UZ0wmpO\r\n27NxTf1k9uOlo5awAugKWRXs/hWipMu40ZJCxOVZwkeGpBbCzRfCUO73tEF2\r\nerO9fEHVJy3chSWn9nmKyQwYsLNsezo/bSk=\r\n=Hl86\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.197_1667141790678_0.4070662577849493"},"_hasShrinkwrap":false},"1.1.91":{"name":"@leanup/cli","version":"1.1.91","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.68","@types/prettier":"2.7.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.91","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-/AIsIUVlvWF0j2d83UpwFdUH0MCWpt0yQWb/hTobOu6MQ/khboL8+PGdo/DKn0mNp+6jIh49bDsK0SJPLw4Psg==","shasum":"c3173152186f77cbdc1260719940ec0eb5ca2d69","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.91.tgz","fileCount":74,"unpackedSize":148750,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEn7sc3nDKaejZ/dZYUPw5zod2+WNmIv4tH/zf7CE40LAiEAzOu+ELSx7HVl0E6sX/Aj1AN/4UsRlBl46KbJ/b+d0RY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjXpCuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqTbQ/+OAQxA3gDQFg5JUcM0dHcHMrUVs59Os7nSgiIA/A9PiSArWkA\r\njBV7EQUp/BUWIEspmkO3jt4a0PitphSMl3q2Txmn5MCdnt/qJrBIpoKutyak\r\nid74QT2Ob80APTVkt3EYU3JI1WI41Wc4O17O7hWYv62wxzAuTr3FeEWJEdnc\r\ndvSMKbmGFvgGL2EYikcAyKTlIk0L7yvROl5SIHEY0BoZFPc+demZOgtO9SEz\r\nwbByHDLbgz1tGV4G3YqPb/ioxoDIO24VyM69Ki/QsRgMtMJmPE83mz20HNZF\r\nlNH3Tf1Y7LIFs71VRTHtpASWCvFS9FBeUZmlZCDxlpnG9ZxLjNY67bjvFFz7\r\nc87sbx0Oi0UiIUYoIBlQkgE6Qa94eXETPcllrIPCDDtPi4QkqiYG/GydvCyG\r\n3YcYJfc26Tw//qyr20X/fTSjlL/jNQ4iaXVLuM5w+kaQaQPGq/XfhvItqOzd\r\nqAyaUH6WzxFDmUC/MHqJxbuVvRHmsStSDVbf7K4A7V55xHu8Xwt2Cta26jQY\r\nXo86wSXy18LXBT316iFmi0nW338+zxGAinIjD88cRir6VEIdSrmcEjQpzpuf\r\nQg2eB6Hzu1ycpJALKWUs6M+gPV8DgnJRew6w+fQ6wUGXhrc2uxokgPClqFew\r\nINqCJ0WztiXnCUsVahnaRulM+mUxYDkACqg=\r\n=oN24\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.91_1667141806261_0.9947116570935757"},"_hasShrinkwrap":false},"1.3.38":{"name":"@leanup/cli","version":"1.3.38","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.1","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.1","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.38","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Wxda0OlyZm5Lq7woftiy4f2ZKgqhRKaIn6uMKcqxSCLVzQPk9oZwEHRK4cBl4ztP6gk9Ipik20uKcduLfzPfkA==","shasum":"13f4aaddb246ea24c7a36f8168b8f516e3d97137","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.38.tgz","fileCount":63,"unpackedSize":140025,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDz54DJEkvY8XqrS702WTUjb/PGHqf2bD5qhtbkjGeZegIgfNerJRfUcpL3rpBwfvpER5uiyTm1lWtPq+srHNK5j3U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjXpEiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoNBxAAnT9/pCUUigEPZB/D1r9fn/urPC94XbXieRe12NEuo1+GZpWn\r\n0o5MA0I9XwJOHFxnhVRdWvVx6Y8jkpXa93G9ih0kYCaHyVyg+Pr/9JS5kgS0\r\ndHo5FuRY0qPD5CaR/g73l5bzJQT3tUDwm7r5iL+Dr09qI9iUegJewk9azGkd\r\nX74RmbSEnp489vNvQjeikUWG45Xe3JpfqyN052SJ5ZPi5Sh2lYUMqCYuptfX\r\nzlmrQ6uzsm1ntvciJerkRNN5CbLN0QkYBircM3LiJ5WYry+48jgqipfhAoiC\r\nZPWSll/zahDEJTA+tiYtm5n++ANgUmbCZKOXwmdPkEd5T2cOLVtkQvnR86j/\r\nJKwSJfM4ckbtlRWWpVuuWFSp5F0skj+iBBXRu+jzLxayiJfLH0drjm3X+5VG\r\n3vqyAR5EYUNuJi8222p2EIFbYPGVYG9G6s/6tdrHn6AeeR3V3LboGPLfWnWE\r\ngtTzop6f87WeMlSUm5C9KRf9241C9Ka5E3t9NAyQrTYCS2mZZuSnX0UoA/0u\r\nFnDJ76WGhb26L236qXK5GLVJyHpM/7rCNIGBEMvmfASjHyFB4lX+29peEJhn\r\n/ASR7M819OxweCNNMfUf4tkilrMVX0MdnMecbFrybIh4dw195aRu6e2RbYny\r\noARhpjKq60R4AQRRFSrYNYxD0oNMQmOrElE=\r\n=u+DB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.38_1667141922451_0.6997445403850289"},"_hasShrinkwrap":false},"1.2.60":{"name":"@leanup/cli","version":"1.2.60","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.11.68","@types/prettier":"2.7.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.60","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-NPxSXVch38EhpwRblPtecrDmQHH+EHgmyV70BUFm23R84iWjqMy4iEVdHUVwf6j4P4lpLjQB4MCKvkv2HpIwOA==","shasum":"ee6c8f5d83f84da39bb73089f2d2c840ed8d735c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.60.tgz","fileCount":63,"unpackedSize":139788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBrLfWE74W7JJuvSCNscx/rFj+auq5XNvB409jyb707BAiAEaZsWGxTbivpIK6Zr7j2AeDaCjyL3uGhyYfnRf53uHw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjXpE+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmozyQ//bd5wphLPNB28/ES/faXOTJV3ThoJrJaecz7+KE039lOVNCQX\r\npQS+tQay4Z2Ww1dOhqyyq0qAI7nT9u5IcI2H2oPVRWlOu3IXFipQeZaVkKfS\r\n/LwQIzksM574emVinQCzg5N6q2Y9rJ9J8cYfaMCMZVNgzmgoE1ymB6E3skWd\r\nlFlGsepL+r1ioX/sjczglWjcPr4dmvba7qBpMMEtsVGsCIJvH2z26w7oYAUM\r\nTs8Dn9N/3ZjUAXTHu1c9DWG0XB+P7yWKwCR4FNk/l0zhvgT/9DNl57swU6BK\r\nZnG/PQHyltnWoS0PlwyknP5+Vx1uSgI+E8HrNbp+nKiAVM5jLoCy25iswIKx\r\nlGT+l98rTclHoiNv6LX5fgnfVP6Wl+0bW/5Lwjp2aSJPCAE/Mc9jBr5s4vaT\r\neK0YPrDcCPZr3ZEjWn5FlBgBfUV+5C7Zu/FZNhXWccXntW1bjrtAXgJBcz1U\r\nEnpSLGkuOQrv+bWPv7gQMz3KAHcslKV2R1rKqDx65jqQqAgT2lQQyPnbk/ZK\r\nYWLYKq9CsTu3yBifMmX3ahHQNQRcWVCjavZ6OQx608J+Y3QZ79Iknii0j2tB\r\nDK72Y37ouK4YdRhaDQCbkEWqVzCBi7a1HMrmzEerwNP/N5SJbIcVASQHyPDI\r\nJeAWDGUccVv3ckn43K2L3RTZIwtFVeIrEZ0=\r\n=MW5l\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.60_1667141950207_0.5193002229073123"},"_hasShrinkwrap":false},"1.0.198":{"name":"@leanup/cli","version":"1.0.198","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.19.6","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.20.0","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.19.4","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.198","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.198","@leanup/cli-core-test":"1.0.198","autoprefixer":"10.4.13","babel-loader":"8.2.5","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.18","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.55.0","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.1","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.198","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-SxNQMHZ9wvmojDm74fvNfYYP+cVL++2/48H1t0OmHo0PlD9YxDQiukjgbFe5bK+y/Dr2YRmRZuTgfD8OaGstxQ==","shasum":"64f8dc61011ce12a3d031cba197abe067b16bdcf","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.198.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH8xu8AfVB0zJF7B+ARsp1r19dh7rMseeO4OJHcyPgJNAiEAicowAH9cFlH/jcdo2TjdQsTmGMxlb2AbgUrxzIgavU0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYsUIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmppAA/+OpH1gDFya/0cSpNucgpfDaWocApyPB7HH1lgJ3N0Vb0REbaO\r\nsTlrD3coJi2INFOjgiPQkLFBZxYwDWDDNlzR2CLElBRFKD90P+fnpzLrVtXc\r\nFq8ahmnRP2NiDDk7c76+4y2uY8qdYb3Qn4uEm0SSrOnkUlBSGnri79OkEz9X\r\nELvKgSTp3mL1VqNHP0N1PFfrgGiBjSw5NnvazMMBETxmMxHdf2wnkE9LtWpX\r\nqhu+AZehri4PYw24+7v7wJb3r0otYgjZkEdH5jFRu221FIh2xORY2QzNuuxz\r\n2jIOsTyyL4emjGNjO9fLcNZQCHkCi0qV+cX3J4WlcAiYAUq9qCTMpVbMReXP\r\nuSzHlUTMvZFzaEUSlzNZ5zslEazn+bRJ6KAg3/YBPQ+MyVWV4Igovwp/aOK9\r\n0c4N63DRqo+/3wxl5FrFBIInnMnjKiFpARYrv5wYhiAXsx5X/ha11K3X88sj\r\nTF4cTgeyZrm2bU6yYkBfaULFk+TvbESh7NCeW1u9mkDk6yYnfSi/Gccl8WoK\r\n8wHFg4auH/bv1GgXdCoHHO1Sq9w+jDW8TnUdjLeUxEYeY647l7+vFSkd1cMz\r\nMYcUYC1GzjzaqGzBPF7iUXYTu/lqHmAFGMvdpY4e9ZGAGkTajM4rQDTj+5zz\r\ncRKySouWepzfrUsyXEMp+xFLG2aMA5GmZAE=\r\n=PBAV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.198_1667417352089_0.9397413366200973"},"_hasShrinkwrap":false},"1.2.61":{"name":"@leanup/cli","version":"1.2.61","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.18.3","@types/prettier":"2.7.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.61","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-IiZOba2ViMKkZHNPTiaBFVk1Hxb7fKRcaKfrZmCDeIJG+mQSI4VnFI1mtCJlNeIfsFK2avEnuIBZu/7K/RFIKg==","shasum":"bb01665379fbeed98c05e0ba245c03694f87c6a2","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.61.tgz","fileCount":63,"unpackedSize":139787,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJCzfN9gbMHF43fiYpN0nemoS+xRmZ+4wI7BCIG51O2wIgX+cTFXPHG2xo5s9qrqgRzPpvdWYE2/+jZlsieAEK8VU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYsVJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCqw//d1JSIXfw2jstq6rrdrUKNebfpN4P7x7SljMyE+TuEGROd+RF\r\nerkuvNpNpnFC+yAj45PhpxPsaNG8c3W/F88Cf+YYQV/vcnyG7jsQZuBQGAgN\r\nfmqqxcNxefV3I3VsEhcI6QvRPT6Oxvy6ckLJmVgkJFLow5A5os3+spLB1pTa\r\n1iBzyA4YOdxDXP+jHdfhzeYtc46tGnE8aKgjjLMwJOkBoO/XwkdWCHmefoyu\r\nG5pjfTua9JxHjpuTtqRA9vRw3BGq5+rMtFsjr+CVbHO3VXR0rL1i4kTjuc93\r\noCDWm04hRAC+buyP9jyD/OQEDkksjO+9Ww5uv1P0MSoHbYhP3G/aYRPR7MpF\r\nv59u9kC4cjWNFseNC68JdW0e6XEohbMCIYiQrrJE8tW+p0RRRWQTXp+eSoHy\r\ndYHhJjlHooeEMdGL3ChIfSqGVUcP2owmAH2T81VbDk+0fo92buICTPoniuNh\r\nkSKP8t7exyS8wWFDWhLsQQIBnjTBLpxZgr1sFJU8lhz1lXO6k30y+djbHJ2l\r\nyOy43eLAxx2UwjwlYo7fogsdhE4J7coNjvwCHloVH7HxyT+WpJGTorSRKbzO\r\nWKRNOvvNKrYB8NKj+VxYxFt9Bp1ehS+yJOb5XDj9FBCnWayxn8GtIXu3Vwae\r\n89UhHUx4gCqsrm/JsbP6n3UIXTuYDyEJL+g=\r\n=ILic\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.61_1667417417768_0.8186837515348204"},"_hasShrinkwrap":false},"1.3.39":{"name":"@leanup/cli","version":"1.3.39","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.1","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.1","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.39","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-7hThj8eS1sXEJT9JsQLM6UfOGhXDb7cFDgo4DGeq0S/EpD9rdlwZpCysKNx0d/jeRjTE6Ce+Dot6GEaSq5znmQ==","shasum":"a480a70705ad019e7cb061a356b84be0aa30739c","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.39.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEn1PFPzBjQTF5uU3AYw0lXiN4QMeNSQGZ17i+g13OdXAiB9re3hhQC3eiS5uiWy1f3U7eMyQxzkxEpNeH+3I0eJkQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYsVbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo7PQ/+MaNViO2+HmI42JTgetsM5SdXcvlyiDBJrwoXzZbdxgsGTM1v\r\nJvGyFfYK3x2ccEcEhCgmEQ70N994ksb6SoEZO2KlKjHbeuORTaY1TtMjxe3i\r\nBWIniRIwuo5a0R3R8WcmxjxZ9Ft39SUVNoZlHEGXppfW9CoBoplx+E9T9chG\r\nRZyo7Ro0iPb2NVwJUwDG/aagHhpB655SQj6sPBvd1zQTZ275Fv5xIklEYktW\r\nizPw9HKLeB17oPiDquF2DQ3pHOpZYhXF07/vKwKjZ4XCa4Vzc+yZLLeFobFJ\r\nyFHQtWp7b7UB5B/22E+VBksAHKQ7xwZ5K+ZmKUvr7CJ2w30VDdDfiIpRTbv8\r\nVOcT2Bijw5YIpiLUIWoN3eHQ4LoZem6n/AA0CQejZVubcq5JBqev+EwpxmJl\r\nvSCCyZYQVTbCTTw/6q+iYLdV/H58QsMX1t00C/DjWZfKSIuoJGwPOnwpRerI\r\nPF79n2pNBIeGbYXbY/I4D6EAnjqNyYM+M+ob7967heRDk/8TuFrv2gHnG+A5\r\nY0B91jNECqyMonWpDc1YoEGOtxJLP+8tW8mg9E0eVmLOFPkcss69z5NKqm57\r\naXOK3x5hKS/iZgMxvZFnqBP/nLoujYUa9FAb8K5BnKxO36X+pgHwqO1S4BR/\r\nFPK0Nodfol/STqdKed5C8i814FUhNbC4ZZo=\r\n=8jnd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.39_1667417435724_0.551915874467076"},"_hasShrinkwrap":false},"1.1.92":{"name":"@leanup/cli","version":"1.1.92","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.18.3","@types/prettier":"2.7.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.92","_nodeVersion":"14.20.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-DhZvQX+1L4WyzSP3YRF27mQMKLeX8iODVChv+RbwVhkMW8mF7doS2szyza2zsnU8kqZEkf+i+yW5ZFismKQebA==","shasum":"beee61db647b1297b58638489f83c5b63c6734d1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.92.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3fcDMRoeHyntgf0b/aPA0YbeSThPpRZy9aMf/YT8TiQIgV8RT/a5DYT0ScV0+DFbRxNhGkMhTDeuGX8P2KEUW+RU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYsrGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNMg//X8rYv9FY1NB0arpZ9OUVP8kYqr9fTjYT2fvNaXRQd8Pe2ATU\r\n7bQWhN2hGI4apRFfIujQDoveVmzpCrNVyuRZGp4XjHZ0IbS264xL7afRE6Y1\r\nujE8/vGY7vUqOlGHQFN4wj6wXn3/G44QPgi3RnLvWVanIE73sLONZQCglhbA\r\nCEw3JQPTCgh0v1as70w5pwW6sIwuxjdI24tcdwqSG06avoj/v3XfaGgTZ59L\r\nSRY8+Lu+kox6Sf2r0cKaN3KFOneCKZjWKCA6U8XXR9VHa7VpDZApyS8EmQC5\r\nJBOGS2G9xCACcGxtTMH4CiiPxmBeeod5K3g88F6cO7BH51cg5+5DxQyNnYqO\r\ntNBEMqRaNhu9+tTRCox1TzIEJ3bToRizxZP2mcgzqsiPPOaNtn55xATulpmr\r\nE0GKHKxPrx2I5hk4UQnOdpJuCvnEBRCVQWD257VuHfIP98c5Z6AJwKJMRfeX\r\nV3JVkhvq8kx8b7eo78C/keCk4SwPzdf4g5MCvQHfcCU5SonvpmSlnlM9d9Cu\r\nI/gDq+0Fbl3x2Qw2ZyLXTBOQEuKp/qco96f16SsUIb37dyGDfMTYP/VBx9ou\r\nQC/93zgkxqJR0flew2HUPNi5Di3Swx8Gswhw+b2gKxFkIqdYfhNEhFNoMRW9\r\n6oyUJug+0WJEDV9kve37w38YAHEkkJJJxIQ=\r\n=cM3t\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.92_1667418822126_0.5078700040312363"},"_hasShrinkwrap":false},"1.3.40":{"name":"@leanup/cli","version":"1.3.40","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.1","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.1","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.40","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-LE3K0w20EIHCCeNjwj6gPz7wpJ6AUHsmKznHvJygH0wBkEPKl9Nwtt8YGmBj+l8CxugDhP7JCZCrOaIsPFk66Q==","shasum":"3aa8ea9ded24da3d4cda5375389713b4699efc81","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.40.tgz","fileCount":63,"unpackedSize":140022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZn2AQo5yNXbQ2m1NcIFhBJ/Y1dmQM+TgF32Mcq3c/GAIgfncHl+Ip7/tvHpalPIejiPhbxUp5UmVymogd45iBDUg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjo/FUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrx8xAAjqx68fhhKkdGDjTBG5SFOSsWYKIeqDp5RsvyJsQE4r+G1ftw\r\nYVrPKzBbsOTMqIRU6cemlCp1y8ZynaydPTfHDA8iKthOJ5qzfM3QZNtwrdLo\r\ntWhEYsod5cVb686wW+LEwasfcjbAlwaJD0hC1YtC67+JcSSUt0fQR2NHSmBf\r\ne5lwVS/DNzEqRys0DiSyHlYIqhiI0R5k61lCyrFe40RmgepJWKx5O9lauhFn\r\n9QYlTZCIrlSpEaolsb5tGTbCEzUsEQqLewV+JB3zDCBBhWlzN/gmOaoBlWAH\r\nw4ew0AxiFkoKZUwhNyorr6hekcpLG+DDjNNceXVG86gW25fElceXeB2cUQ5q\r\nAwwOH/lAnO1IKjU6eyxdyarPV2DXliShlHxMEqhWh3g9BD4KlTiJiDeO/4kW\r\noeLrHGKgbiz/X/y4OZN+mt5U9aMi3hlTg7ttyJqcxURke+lEa9jSQPv1sVCe\r\ntG05aCD1ZHennuYp0OzHsWuOzp2XJVwOaYNlPA+pEkTHPdv5SAQUoVRAzdft\r\nJJuaxN6A7VQK9PvODIg04c7GjSrbtHgljbiryFoOToTYoEAPfBlXWjyjYeKj\r\n9n9eM5IWz+JBS2hyPmkff4XfVnTTF2svdfDc3PdtfT9cSQuVA9caw1mlKYTy\r\nnQtc8zZO+Sb4W3mwRoj3B1LQCHLWmfBvjEw=\r\n=prg0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.40_1671688532055_0.58375117580141"},"_hasShrinkwrap":false},"1.0.199":{"name":"@leanup/cli","version":"1.0.199","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.20.2","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.20.2","@babel/plugin-proposal-optional-chaining":"7.18.9","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.199","@leanup/cli-core-format":"1.0.181","@leanup/cli-core-lint":"1.0.198","@leanup/cli-core-test":"1.0.199","autoprefixer":"10.4.13","babel-loader":"8.3.0","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.18","postcss-loader":"4.3.0","prettier":"2.7.1","sass":"1.56.1","sass-loader":"10.3.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.1","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.199","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-nRJJSBBJdqH5u/6ZIaMDVryM8ZfAgSlF63w2HDLFDoF0bcSC4xFyS2gn2AwzMP2XXGhgTQGoQG5cOkOuBY1xuQ==","shasum":"c2cf4f56790e6a850529cb089d927be267759f10","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.199.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCp3RVqPLwACqyaZQsD92E73dFG57q9HROy8TavHrWcwIhAIJaxBZtkf4BxSWYK7AKkqdEJnCGx3VG8iUYsM/BhT0O"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjpM/lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoI9Q//S+iLmHybzG0UptN20iUv49IkrSJJc4mlV5yhhcNDetk4+z8k\r\nKvnevtCBFm1AADMqYdGC6T8/z+UVZeLHfH0y9vjhhtE8b+44YmprmXaaeL92\r\nFuMY8aW7axTUd5qrzEvDw0CzAJBxU/J2dtuXElBmjAJW/d1kYVR0xM+uhw+s\r\n4XZEZRsZajc6fzEXhuD6EqTg81Ez+rapm4lb4jZtkknBt0kiMklX8fVAifHr\r\nrqfHRuMeCzlF+JtXvNmzyG+7QWOCT9bzyDioUGNt38AhN45ASEoQPsiXo95g\r\nA6OTRnp/KErkp+KES6iKGpB9/OqXs6WoTkUbxKqDSSPYSh3VpqZbN4jSXenO\r\nwnAkBfxTONutXtlw+HQGS0c7GcjP4NLiVjnCmFnZE25Z+5NkwdvBcVhvTgTn\r\nJjPoO3nZB9NwRw+d2pgXjGPUi1gq9Otcyq+Dt4s7vkoZoSdXq2J0CgouZ8eC\r\n/JFk7YFI6mv1Ow4+MizD/BmLfZL7ejDbjV2P0Vv2RaPQa4RB2/DonRk2lHo6\r\nNgYrLufz/var6iMFmQ+hQksxF3raC23e764OhPSrMF+j+VOiPsUJp1EBINbq\r\nD0mDW5uDQnSA2o4yVd40Ca4mjif4IQefTGim7DuyW/GieypDXFmdvFoVHXwZ\r\nT0WAZRjrzSwalPHdtA/AnM31V9zb/Pzv9Jw=\r\n=lPKp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.199_1671745508845_0.8146628673318193"},"_hasShrinkwrap":false},"1.1.93":{"name":"@leanup/cli","version":"1.1.93","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.18.3","@types/prettier":"2.7.1","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.93","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-wcBYhAvNrYiLPrHRiJusOMe5N97K8t/v6P7kS06kFpUr9nxzMpV8hiLkRvURaqA5bFNZhUVTZnkTR9yK/ld/mw==","shasum":"d93e951be69a1de682f77d76df3210efc5df793b","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.93.tgz","fileCount":74,"unpackedSize":148749,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHLa6o1DMNTpOnEYyamCNrjespOp8WWGVqgzU9vhdhZWAiEAgLx+D7r8HnRdjD0Xto0Iha6mHsyPBA4aQeYz6LztgKw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjpM/7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrfww/7B/uf2lcIViKrTTMijMewVo/Nu/iTujaRxpQaz83kMxxr9Ta9\r\nnQkCJLEmdamPH1I6VoODZwRTlATRfBZCLqcgKI75AXUw464L4zTrhUgCWeSd\r\nWtL71vmz2su4hEC/5YejH0iPQ9SZDHHrNP5OCd9jzACl0B6+xkp7RJkyTPsy\r\nAXKUVLniektj3Zu+++ccKBVZ+NLHYOVzhg4tl3jDv5BBXDtllm2Pp4J3wBFn\r\nA9nUKpqJdkQdMI+/JPp4icGbh/Q2zs235iAYOrAho7B5g7pyWfReSbe3xiDH\r\nYcmFY9n0OZcv16SzW1HWdzCF0pUPPR9gGYjHbf42EUNh/tCs4VDVazSAyuF5\r\n2SfBwgVf1ToawYL6VEDKNTD7CPiJKGY6IDj7MXQMEvAwEIODA7XdhWNq5JcM\r\npjduW+0F9yyS+TyQgUHXGbw3+AQzAWK0ar2UMRu/btFndBOfk2qU66hUBx0k\r\n32oZfjNRxDzvMtbsvwBgwCe3OffJh+C+GTEtDuMwHM/xYLcq7M3Z2tiM8w4g\r\nGsofoy5B0b4I6g1+PgrnFbalsqzYYNbNcYyeJYxsdj50siTGJsbVIVXzMArW\r\niZ/ggozzpYjE65nNgQ+Aa3mH/PMec8ZSfFruh6Bg44zYCSLzSYfgspdEijyX\r\nFuSwqZHA/P0rbSvAIyH/YV0tUYLgy/14GCI=\r\n=5eDV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.93_1671745531516_0.6547339889834951"},"_hasShrinkwrap":false},"1.2.62":{"name":"@leanup/cli","version":"1.2.62","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.7.1"},"devDependencies":{"@types/node":"16.18.3","@types/prettier":"2.7.1","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.62","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-FdrSs5htQo+b1Pa5zI2QEo2DkeuWtcQsJfTK5KWxQxCwCdtfvElCU65PNSDcLSJbvQ23qFT0n3TPYGbwMrcDRQ==","shasum":"b423280860fb69845586964a0c4a99256982fbf8","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.62.tgz","fileCount":63,"unpackedSize":139787,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB8D5/N2ePBHxW9+K+jfKz1jxdlg5NF9HD4vGRp95nurAiEA7xZWOibbNG3TSgpNnWRxuPuFweBwOyxRXcLT2NF5P2I="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjpNBKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmosJw//YE3lU7rXeZ79zaplf1GZ+ThwA0EJA1AyxAQXv9tXXU1PB0UW\r\nlRDhiOtnR3SNza/0Hp2HHAORS3GiUMVq1RJFXdhfOwgNW+JD2JDdM/D5xd4R\r\nljPzbTDe8ET6IgXBi33Om5q930LUAxWBqPseJSSRO0iFG8AthILYFLpsB/Oz\r\nnpVA6btU8p8SHqYryPWJK48aizCs334mdhqUspLHE92yvU2G0mkXPHhMbSMJ\r\n/wN3YJckqhpGZwmKMpMAlnsTcxt4/zwA7tLhgu5x+MKP38Y9iqDmJwZTx/qw\r\nHH3kq3NqfQvcTjq+Su7bbSLAFiXrcpQCt9Q9i40XpdCewFyoWjEGBiCyjMiB\r\n96wkgIWvc4fM4sL/W8JJklAkZLCoBpYe79w81+EHuMBn61vvfXJhNZjwHCZ8\r\n7iRSPycevG5dlLyNp24k2sQZnEsLNr510xv1ukNzEW1ybAJe5xMLUBWt+8Rv\r\n62e6/KkW2j/3Hz0Ry2bHeyqfYtU0JYLx9Kc8QpIy4xnh7w/ovvNOQHgrpSwL\r\nB4Ubm3EboS44By5pv16bBvPUr9ta84xjnAJQZAGSoKsHydrB+V20vpwQUG5a\r\nr0sAQIbHResYWA8isodDoq6U83MUUjqz5JALtn7OKQrgnUhhxcC5tVIQGDf0\r\nUtu/zoAvNl422S6blJGFwY+mgK9Io9+TZF0=\r\n=6MhR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.62_1671745610144_0.8366215265184955"},"_hasShrinkwrap":false},"1.0.200":{"name":"@leanup/cli","version":"1.0.200","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.20.7","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.20.7","@babel/plugin-proposal-optional-chaining":"7.20.7","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.200","@leanup/cli-core-format":"1.0.200","@leanup/cli-core-lint":"1.0.200","@leanup/cli-core-test":"1.0.200","autoprefixer":"10.4.13","babel-loader":"8.3.0","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.20","postcss-loader":"4.3.0","prettier":"2.8.1","sass":"1.57.1","sass-loader":"10.4.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.1","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.200","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-x43QJiXI3ZIcBcvEYgJEUFx7qKbw6bWqCeHkH4cQgKPvbn16CLoLUUdgqXIImRxbsPBU07B3VwPNMQUr0vckbg==","shasum":"cffb2452b38452b1845be6199a843b657c4b8af1","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.200.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxBPaGW14rKM/oIzHzXYPDGWQD1E5EdVm8/ANkYtZ9+QIgOzEBnUIH8H7oHRimyu/0t+azorahV+lC5EV+VZ5cGcA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjrwEqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZfQ//Viq1iojsxjaORUzFWt4JO4YhOsF6TyUBSO0FhkNhJui2oc0b\r\nh8VGAyowRf2p6jKojMDGX/wOMeFzRuzG27cH1qURVxILA6VQ6vSyiITrb+0T\r\nlC2mZQoJh6QtEH+t32ytuOn/iur2qene1H1Cj6c5BCj9S7GjJEQmu7LAOsnE\r\nMq8JJ/TTD8P1ml2+9bdSvEYEdD66uNk74ovCy524/XRdTpnXSdLHD80X4yv/\r\nhflhrNopLBD8IaCVZ4eGKqEIux8CZlwAEhqpKiVtWJoLtzNMLPxy8MlCGwxd\r\nIu6AH1srL7ROY1YX9EUhnbkn8FQoPezhuZPyudUYxHgKMaXhEIBm9Ma5pzNV\r\nx1s4ih4UwLCd5IevgkvIUiHaYzcHKihC0PBsjh5yonRK5eUILXezKGQ3r3Ou\r\nCYJc7R5sjUT2eH53kgH5RTWE0XgS5OvrJnKNIwtxNpeMXZFdHd4d+aHo85y0\r\nTJYNjKZbuXfk5HbcruIz1rll1L0ZL1vt1IJcIcbOKihigWVQ3FS83sGrUMgV\r\noSJqCoDZFxr4cdRzUSRCOHk0VXoHjZQ8i3VdinCgTZgKlc2ejoK7G9l4ebEI\r\n/XLREVFdC+5ALuI4L/LCkIla0CIRvlzKO5ARYThqFJQ1xGJPyAYlu6gC/kOp\r\nUjVB+yenV3XbFEGsRPimSBGz8TfILmTV1Tk=\r\n=DQQF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.200_1672413482690_0.8560825142343493"},"_hasShrinkwrap":false},"1.1.94":{"name":"@leanup/cli","version":"1.1.94","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.8.1"},"devDependencies":{"@types/node":"16.18.10","@types/prettier":"2.7.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.94","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-zdNck/ysaV9EPPP7dji0MEh0KMTMcUPXe8gKsLNKGlNODYA8HNcwwusmut0LHEbjcB6BV4YbvkkrdKw7cmX8+Q==","shasum":"d075d4ce1a8af9ec98b87b167ce9fdb58bb1ea03","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.94.tgz","fileCount":74,"unpackedSize":148900,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB1/4YCo4MlMQrr+4CoZ0rTuimyu/blNvloKQZnUSQqmAiAkYgzuZGGunFY9QSd5oRiNLdzDNkqUrh/7kNI+O0BXQg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjrwFEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqOthAAnLGeihGmrjC6VD+m5hxhvaevo1msWg7pIBse4FWwRXjLDXrF\r\nztgUFF37oYSiisZQEq0e0iWhBR8QbNlzSt/B1nbw1LDXaRJ84TtvNxT6ies0\r\nE1eyHcWxraEWtc8J4oEWoUtsrnagy92PX0wUtCbL5rVGkcLHpkW7/HlTL5Ln\r\nKjE+OJ+uG/irj49Q0anIW9WjWz+4HQiYNytWfkAA/nQIAMDLubaiMEoCDKCL\r\n6DLZ7SevKeEG9rd4AyqEMT7Qt5G3WWrHBsMfk2j6ke3QNlxJsT61vjnLmNuf\r\nZCabrcSYYray/oq3DIJ3GU8GiiM1DhEFRUZxoag7NkVLUCfeg7O656Qs1b5G\r\noiTjcoLTWGnB6PhznGFyV41bnC+vopla7HNG4GSaM7URoyowDP5o5xblz7Zs\r\nQhTStTdsYwQh/zSe9ORa7H4mJIrMs8/67crysp5Kx4O1bPDP/WNQ0JzVDdis\r\n+YTj1g7+yEZ0aTwNSV/GZGSyRbPKxZj/cy6UxwBl/dJCPUhevpnVdCIbKUrb\r\n7K7GIw3ucTHCTSmNPRaFL/+kH/UoYKQb3Zm9pPH1UESAStFmhdmacg521tDf\r\nCfgFNhvedwgJqT8OiBQFnh04Fz6Bn/pHkN6ODONRrTNBh3SMgFcPhXtsDR1g\r\neDimyhdWmTz8dv5qwhJcULoHX9HGE+j3hhA=\r\n=woE6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.94_1672413508466_0.4049418411615435"},"_hasShrinkwrap":false},"1.3.41":{"name":"@leanup/cli","version":"1.3.41","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.1","deepmerge":"4.2.2","prettier":"2.8.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.2","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.41","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Fgsu8W7srKaad/TTIQGAqun53N+L82Jq6Pj2cmjNT+ep5HpMa9B9Qdp+hffIYo++CaxE9hFHD1YPX2nA0DbQBg==","shasum":"90f070e5f6b3a0537f0862ef6e2e079082b842dd","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.41.tgz","fileCount":63,"unpackedSize":140172,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICK4vOScsGsvKWs6qxes7KxNQ+jyRRdeSkpMmAQfYUmrAiBQtjX7r5p5LYZ3zXl7lp3F8hH7Q5ORdZnJ1pgPXEqDsw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjrwF4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqigBAAnLwXkdZZxRpY3xgUTuDv/GI9c2SXbi9VG4imrCw0gQVUnvLi\r\nZDNWwfOVrqJMm7dOv7Ll/D0cXTPTxsR2OOORfef3EnVDxHYrA6u8xppD9SEg\r\njCF551PUJHbgWYdrCVfjYO3lvxw7mjGodtvtoTSitV6kCzP1/psg/2qQn7z2\r\nBJdDiv92v559txj+jA5Ul1/ep4miQjzhjBpRv1MIGPlAQ4RRUvV/0lg5W0XV\r\nHIqJmxG7TtFFGFDMQn6zfGLF6MlGxVI8qhKqCujyyXZdBYdzvK13UBd9anzF\r\nffrd7YoSZQgFsphsIvcBS2s947zhIlEExx9LjO/XBT+7doRfI2d6lh+UdDNx\r\nDK47Jsu3HnopCoT5paoFhZG61YxX/X/4EsGa0G8TyR/7lu82FHh8u7ai0HKv\r\nEuCZf4/nbRM+1He3MjFw+uZQ3oNYV+NihUJFYBxLRspY3N9Q+gwUXw6L5vqV\r\nG45MXr1IJWDHdzuwilYaRUeC2pnKDM6hPjWT8LY0tqzaZ9w85qLPQnbICjyL\r\nsp6O1NJymW3xv02z8Dy5oBkDmWnTXW4LDiR1l93bvgel7qBsWNJK3mqCS7os\r\nUMSqHPWR2Vd1E9Op/FOjPgHvH8nrVDTda3PPHGtu2zMOLvLp+eoeAnlfp/qs\r\nhFYUH3MN+yc2Hfv7FmytzfLE8iqklSNVpIg=\r\n=E23X\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.41_1672413560397_0.5798985635992933"},"_hasShrinkwrap":false},"1.2.63":{"name":"@leanup/cli","version":"1.2.63","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.8.1"},"devDependencies":{"@types/node":"16.18.10","@types/prettier":"2.7.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.63","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-ZvPI9O6eWOqt1Lb+euMNV1CULVOgAemxwFuesC7dbS2EwOdiSPkIIFpWhWovM1CpqaZD+IVg1vS1CeTTBqfqLw==","shasum":"8991cb29a9503d74de31aae6a78829182b957846","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.63.tgz","fileCount":63,"unpackedSize":139938,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0GC4mt52m1HaMy3IoK4PQscVDaVg0Btxbm7oBuHshBgIhANG2LFRAo+Oz3qhxh6Tr93zL3khILWYq1dxOziomEat8"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjrwGRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoRCRAAlRUAPGuiSIytmU+cAFvKeaPjr9POFWvASzpLCz+8zzJ9O63I\r\nLLzYHbUzclwcasGeSmz6TvkS/qK0IKkKJ67s3YjB1teMAebqNgXtmfBXEh75\r\nVnG8+uN0H8dwEp5oF6Zk6L9WH+YLs7Es4n5X6HAgpyysluCYawoUZN97kWKw\r\nuwe+9u3t5K3NB6en7lasfUYoElSfKvr6dC9B5Uee2txx0o5+HZwcs5gmMCcn\r\nPoznAMUuAFOSgo+hzHNuZNJahit6BRrTCO7kJA8SHdg4GEt4Z6h+mexaxcAO\r\nWfk3RdMXyKhK0Se2xxqhxO3Lbpj6iClqcjvDvc2BhPffeUuy/EFOBvmo9YSm\r\nJXAjrtrMTaY8J0MEmf3Q3QvMmKMssOtuZfhac++ehubhpNRY2+JiDBZgC4De\r\nQwsfQWO9O4cJZLq7L/ikI3KSuoAcrCz6PzVzYHuXoDKVpjSVTU76rXityA/L\r\njm4s30CXyGwEWuMA+UboFBVfD29HqjEf7maLE8D+N9IITt+ju/BcxaHOFPt0\r\n7i7paMYEx+pbFutqTv4DSYrzqVQ21ZGoY5CWolCT9EHin9N2pYfwF8zNgryw\r\nz/fes+sWEU1WQ23+pM2ZZdndv9+xJPar4staMaUIJCmZD6KcNvpauMJfrPk+\r\nzMN36wrVSqh7Q7paLs+wY8xD0nF9Mo5iTzk=\r\n=LC3h\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.63_1672413584972_0.5545360432185902"},"_hasShrinkwrap":false},"1.0.201":{"name":"@leanup/cli","version":"1.0.201","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.20.7","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.20.7","@babel/plugin-proposal-optional-chaining":"7.20.7","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.200","@leanup/cli-core-format":"1.0.200","@leanup/cli-core-lint":"1.0.201","@leanup/cli-core-test":"1.0.201","autoprefixer":"10.4.13","babel-loader":"8.3.0","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.20","postcss-loader":"4.3.0","prettier":"2.8.1","sass":"1.57.1","sass-loader":"10.4.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.1","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.201","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-PHTzA9mV/Q7N2HXLo/UfzLzl09zbh3IDck3ems2vZMQn4NFw8o2dxGfjaVnAOkJMwtba+uajx7jjs65oPRcgQA==","shasum":"00cbe91e8c13252818bf4fa2e06c0a97f30e64ff","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.201.tgz","fileCount":64,"unpackedSize":152163,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGC7bZBA/kOwFZ2ZcuUv//3w18m0c6MWJLZkhqoDIsFWAiB4zY0e6jjcWNFkR7zLX+kVhyKNZTD1kPQSPso3WL8WpQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvetsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQxA//Zf08HxAZjRJlP8BL5adBdihD5FraBVbyRykJX26fE6jVYmjs\r\nOhZXVn4HYvadQeBH277RElCmyP6xLI4TEvJdlIFMBMQl4s/Rg/OXF7Thzwj6\r\ndM79WbktLi46KztYgtSfsEwrknoZQNzJpxMHNtP7rYPoPpq4xMeM0HijNxHI\r\nJrPAB8WfnmBpOhAe3+sHOuZ7KA/SOjlly0QcqCj1v9YxK6nB9LUW53QDHAfb\r\nmBhKZURKtTVhNFRVnu9qLDRqBcuLNxa8K7i1OHTnPXB6lvvkdvbqBe3gmgbX\r\niqCfvGd3uAT0YVPE6P0615XXhCaMKlo2x+NjbnNfL+pYXhhfu+/H7Ephosif\r\n11fBfWCdA+vxQLeM1n4mr+1VrTLjUqsyFT069Um9xaqy1qfjwCatBUGXu8Jx\r\nLDUo23rRLe0uyE5Algg5/gWskeYnGh0CCiW0Nj+wvIT/E+g567yLmb7xR3do\r\n7ls5XcFn3ECr/tXFrwOYxk9clyXCHVlFCbc3dX0pTHchGzpOJvMUhkLnVaBG\r\n18xo0eaabKHu5imAj1wEnvEvIrs/hBXcOpBDYSaKK3o31PiGqZ30JlW0aZcK\r\n28aJf9DRz1gQWc3NJLHqyTvTA0GEyySFlLY1Sg7Lb5MGrR6w0BGyauNmwwkN\r\nQN2sQjPdRK4itFmYsZqLLOxA76/Ud62G40Y=\r\n=IWfw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.201_1673390956686_0.21432881598646247"},"_hasShrinkwrap":false},"1.3.42":{"name":"@leanup/cli","version":"1.3.42","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.4.1","deepmerge":"4.2.2","prettier":"2.8.1"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.2","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.42","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-2/TKOOzJRQf0MxWH6TsKX98Mr4FYZCt6qr25I/pBgFMIlEFmHTJA9gDJbbV33ivUjXOw8hO+8pczk5NZIfZ6hg==","shasum":"9e2cca58a88dd48caf2347bf81f34763ab6cebbc","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.42.tgz","fileCount":63,"unpackedSize":140172,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIthZFDI3lKPjpMaTq2b2iaY/JLGuKotMlGnWawoiSFAiEAkiXpDfRlEyU8BmX7SljyTGp7bALWbZY5JbRDNlPnWy4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjveuIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqedg//cW1muReu4y+nmqmyJNrMOxJ2YJLWeCpOV66sqMowD04n9Gcg\r\nC0vV1W/5xfXJeElvwNuSDdDR1gCDogElhwLkTpAKn4tODHSivMJb84uOMmZR\r\nHQqqcDtp4hvR3af6fXIx0xtXxFmC3vZiYIgmhtFGIwxLO1oB8da0GkpcFFYN\r\n9/wNjEQwBJAg3zJH8j5M+mi9FHjg9COs7PcGUblKxp3YvfHqnHjiyN+q4YZD\r\n82T+BnBUFkdKVtrMcQnUlgyLOypk2Qr+Ys7v56SvoKcIUTBQXMrNEy3QQGLM\r\nyUJU77A2USCWe1XnVaP3iuV8+DDKkiAemjT/PO7tCbolAV6QbMpmGHOtNZwi\r\nia+I/tVKm1dUEPO3h6/ZCsvE/sS0AY419h+sjPBjqJFXP7ji372qPBRsJXFQ\r\n+2Nro+mT/neMGTkLVlIi1m/rE6bXNMUSe6msDeJp58XVCWSKU58iOegNTFax\r\niG8EF1+wLsLXb4k9MIXwnUHeYgFAkirWJ70uOkOOt1TnkXJ3DGWTJIz6uyaF\r\nNjcg4oXdTNKXZoydQF6/+bdUKK2/hyrPUs8FIzq6uepWc4M3AogNDYhKps6H\r\n/kNO3XFcduG2PLEvL3esXO8UhN4uyiCtavhaYmHMA8YzCYN/23teC5ayrMhm\r\ntCYpP9ySDduYHS7iGa2ovJ8mFqOyZM736e4=\r\n=6+Q+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.42_1673390984532_0.7219296657091243"},"_hasShrinkwrap":false},"1.2.64":{"name":"@leanup/cli","version":"1.2.64","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.8.1"},"devDependencies":{"@types/node":"16.18.11","@types/prettier":"2.7.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.64","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-T2o72DpvwVXRWmHma8LVtYCcvnqIwPEy3PEjaUO01ryqhGEW5D0f1OHlaTNQ0PhkX8w5o7CymXIgWa8q9RbVjA==","shasum":"0c7e6f0d130c0f4ead86a3c465e249fe5d857ca5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.64.tgz","fileCount":63,"unpackedSize":139938,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkcdviQvBX5+elhIklkhvbHcPhCeW/H5ki+G/ROqhKAQIgagct8rDN+K7kowwamFES4EKdZZBBVtJUAgSodveHM4M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjveusACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpP4Q/+JCqld/QnExmxZd2gAeUltgd/pOsOBT27JqqLvahQsPGn6ijw\r\nUoJ9lADFLNG4dqzjA7VcTUhgvVAHum0lsAa0j8xwhBKMA5swGUXh40ZHRRpY\r\nL86BdebeEfX/GHn5AUTYtUGbTQYnDBcl1AwD2igjXUyyf8zdCOdfLMLZj8uP\r\nFfrBLZEkC1sCIH7STbQT1Vyl4vPLdFuJzvM2girHN21LBP54F0YALARx1cEb\r\nF1kUpr46UdLxImmN8MIDx8TnMuO+WwSLp//3k5KX7TvtF8IMXorKTeUCBQjN\r\nXSxmzhQdVPkPfFdKxU8f811/cIPrZr97QF0PrBlwZPynkETP4c2n7xkAS+UP\r\nk4Ib3OwTMKKpcNTD/yR9AO4cdqL88b7ngMxVXzMajjFxTqRtaQkdzl2LEG48\r\n7m1a4v5lIPpl9mwLKtyAagUEI6RhJraQP5w9ZuU6ztSyQVSPtDeK0KehXanb\r\nvLxZqCR3DpUeobayD0tmjmF8gkv9KL7dr03CK4hx6zw5uusdMuwd32hMNArJ\r\nCbrRNH1zgYeGzRjMcLnwoh/Se3HBu0E6VpDNsinHJkZrUzdDy5MdJUTkVVmk\r\nFHPDS4eQqtqmSrJklPaqdIdRPAOCEB5f2ClDFlEE1HSV3PQGBHUyWs/SyklT\r\ncREBWy/0YSeZ7VSxi0bQxtpmHRSYtdfKDnw=\r\n=r858\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.64_1673391019885_0.9104742859974042"},"_hasShrinkwrap":false},"1.1.95":{"name":"@leanup/cli","version":"1.1.95","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.8.1"},"devDependencies":{"@types/node":"16.18.11","@types/prettier":"2.7.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.95","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-T1/UTGwl+o6g3BEb1ksDio66GEPFS8WtA9F06Ocg6DAYQgySb2YaH9xdHCiAQC88CIP3R1B7Nm7155qnedhGOw==","shasum":"24b4698453bc350df248f4d244b64b2fe573e520","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.95.tgz","fileCount":74,"unpackedSize":148900,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnit1ModJuBZqC9fr6gAhaAQDvzVYs8EdY6Va46ZzPnQIgZ73xoyF7rD1dxP6OOWpQFEYURXD4U9FQ/lZzjB/kw8M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvfJOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmomFBAAkhQzi2sQR3vox/enG+DE6CF3QhYIIRpfc3nxpAzgRQmFugGu\r\nYovMep3hAyWvmY5BYr3y3cYgKGr0f4TXK1cMbk+d3kbnXv0KPeS7dsctSZwd\r\nLf/gF/ZdBshVzQcmGWUwRAQJCJ9FuWbOoiQx2HU7vkl7JMBrc6UsggL2iHwZ\r\nH2uLh1D+pkidDGrnZH6bczZC//e/cYY7PeM9h4j2eyYPy5AVaxYcUZnrGTG4\r\nLPMmWIMJwkKhKs4HW9E3ulWxtiqWJkGWQvLZA2Fx5pW9SGaD2wjcuuZYczRn\r\nSwE5iJjzwo/+vs+CWkFB8gyygsMG9nEllYQtUb13KRdfUWn3IsaN+mv68Rvp\r\nUnKp30bwmxtUJplRxoR85IoJHjlgIIqBch8UgwiCu4cAzK1q7fujAiUrkMVW\r\nE0roSzoHhmPua7YA0usGBCfegepwe4OBadxZNEMZ4sBQJMwlr0RQoGEKmpAc\r\ne4RuonfnhFRl+C9ZzXGJA6560muUYAYrCiRIOAlXUWmu9BFSiUiEI9U/DYN4\r\njonGMtTvW2wUMFNgy74p3XSyeNOffTBnX7aPRrF/v83CHwKEceqyutQsXoV1\r\nPOp0OMNHqNqlMONd//mZ93muuPRycJCV4DbzorGsJGizZNqLwKFSas0EQO7f\r\nYOdi8hZzTv/oVYA37UBPdMm6hyhyZ7JI0YI=\r\n=/O/V\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.95_1673392718614_0.47199519906276577"},"_hasShrinkwrap":false},"1.0.202":{"name":"@leanup/cli","version":"1.0.202","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.20.12","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.20.7","@babel/plugin-proposal-optional-chaining":"7.20.7","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.202","@leanup/cli-core-format":"1.0.202","@leanup/cli-core-lint":"1.0.202","@leanup/cli-core-test":"1.0.202","autoprefixer":"10.4.13","babel-loader":"8.3.0","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.21","postcss-loader":"4.3.0","prettier":"2.8.2","sass":"1.57.1","sass-loader":"10.4.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.1","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.202","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-tuoXw2ynKrfgWJyI0jXVD7sEoVKlsmHGSGVPfufS/KXEr8xBd2iTvHiKhHBZNZMCF7d7/jqp+Lp+IF5j5yn5rw==","shasum":"88aa11d012f24ab0b7c5e2dd401ef4734b84de31","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.202.tgz","fileCount":64,"unpackedSize":152164,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIESWD5z7M+doMdMMUMTTDAGgoUK6TVuloDg5eTulLZDZAiEA08DYLdkQu3Gzz9RnO24+hYmCQ3twP0RQFkYXJ91szo0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvkp4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpIAg//b5EG3iXU2jfxVtqeGY+KgayZ+LyLD6zCXKBm+lNd83/H2u7y\r\nLifJrdi5y0rVmSwCWyTkBSNDzCugzhR+sgS9gaysu1KWIOz+BBU5RIID8C3x\r\ngSyYOFl4xD5dN3rjmlM+WteXX6FkNG9wQiC/321HfnhcVYLAbUE9y6w8Nn9o\r\nmzoM7a5hFaPm5Jtu0324ltlhFMtgD3g4w4pegSzBOYvgL86QAha5+wQSx7Ds\r\nZ423gPwc4RKjFGxQW5sspp8PNsHiadVKMebPTqI6Jeek96mEzTygJc1eXBat\r\n/qIZnE7Gz1o7PeM2oz2M2bwZkzoHU2Q0YLI4sKxPyC6+zIj0VYGRUMyQOckw\r\nXtJNclfRNTr21bZd8cN5s337OsF96NCeAdcTUj24yqAs/p5FX4lJRRUgll5L\r\nKPSvOivzKDvpEhwsWOt7dy1a2MNbMTW2RfnCsedVbLrCiOznO7xkmjxKpQzR\r\nyKX4Lg1E7KNBfNPRgnw+VWt++5bIHU48sQRXY1vhFIsw0ABAdN7JrjKbHEZ4\r\nqX9Z8W7We6VgOF+5S3Wg1dtIP6KAMewo3ozflsApZFLA8DRaU7vrOen1mwYH\r\n8+MkyOIqwSHrPJP+aFC6OSx19Sw7DEUZCvXtFAPjLkBbFpVJ5JCc3+BTFjjb\r\n076mk2xyaiYMt4nTd6fwuE8YS9nCRqCDajg=\r\n=3Azd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.202_1673415288308_0.4208362145544371"},"_hasShrinkwrap":false},"1.1.96":{"name":"@leanup/cli","version":"1.1.96","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.8.2"},"devDependencies":{"@types/node":"16.18.11","@types/prettier":"2.7.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.96","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-9/4ALe+u+2sayNFUrR2UkdmcBYcgN9cBFJFPzF0zbNUdsyVX3IOkQgjDViKfBH7a9ft8zCSmLBUAamqbogqGKA==","shasum":"96b80ae207c8e8cc49977b00e7f80c573eae95af","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.96.tgz","fileCount":74,"unpackedSize":148900,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhX9wWAA0rrHBnT3NxV3dOfbmx3rfDSuoJWUuL+P2MYAIhAOk08hz/h6BhJGLHzqCWOT5qhQSCNbM/zxnxTRnVqBeI"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvkqaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpEVhAAo0Z0ytQnb2KAmfxq5s18WIbpiGeYeYsoWCoAJDj3s6g3GGA6\r\nU0wVha83WfHaLmn2/KpmaezBmiAWxaTXEaqvK6CrV8EbiHE92/qf8VCj9qd3\r\nuN/mu7+gV8T5FLs48OOa4T/xkVTkEGrwQS9dxI+bPcL0nLdahdhPuOhdE4Xb\r\nU5Kj99grp+v2b9wMRoUlXdeluTAVZk2by5T0oJ7ODl7pqlianIhatqeSEKsQ\r\nyH3ayZD45eN7ISSHMJobUBo26YxW6OONIYxB4/NXEJtxxA6B9mHOy1O//+2V\r\nMFJdhEPKcbn5/ZnKLCueCjA/zJBvq7PwTUjYEn53UlkIJsWZV405NbWAi3NT\r\nIaFLthCbeAJJ4JPfbT224U7Z+slB6tGE+W9rgiAeMppHpq9vd03sJFIRywKW\r\nttI7fo6iwaJov4cQ77sLPGHmfYKxeIDmY6zdjMgcqxx2kjsUbklXCEEP3d8C\r\nGRNinN9zVK6x4r0o7cDh1qxu7tQJ3LeGwbDO2SkIer+cMZXkZpZFluTMftNa\r\nMlcrS2BfpdzDNgCectCllO6jPWirR4u9M0tMD3GowHMz01bP6PKR8BlwLjwq\r\nmExJRTPtTstzixPcFEA/KuVEbBVRV7kyYFOdtpnliuc5iiqrh8hR/Eja3EES\r\nFz9LNeYRb3OWFG8tKQEmZ05PwvGC7nAOzqc=\r\n=siiS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.96_1673415321876_0.9695319067444941"},"_hasShrinkwrap":false},"1.2.65":{"name":"@leanup/cli","version":"1.2.65","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.8.2"},"devDependencies":{"@types/node":"16.18.11","@types/prettier":"2.7.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.65","_nodeVersion":"14.21.1","_npmVersion":"6.14.17","dist":{"integrity":"sha512-aSCPe9/qYyRmTl0gD7Ac1zCMZ25F4RWi+N5xE35/FN8+LH7tqqXvDoP/CAqzRJFkrvkdo/VMhyMyhC9wZxm2RQ==","shasum":"7c2b48a74c6a6045de9c17d31cc3507be3436604","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.65.tgz","fileCount":63,"unpackedSize":139938,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD38Ma1CNgj6Vw9hUt+zG7G3JLRVPd4NmiTnB0mUeGB8AIgVCb5mwseTwYamhu2bNh1EbhUXlg+jYdpSIttQ8S0ySc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvkrsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp5Mw//R24n4e/AVpL5ukHQwMKLw2nU3pniIfGAZfowgEPtqJFBwJsd\r\nrLzQ0ulDMOPFL6ZEy9XTMw2/S7NrXNifmB5mAZbAqUhsewZiNQn5Lic/Zq41\r\nkwiJLGyfEkXJmZ0ZHHU24RgWS6yHTwjHC9+5Qk7Kw2gtseJ1LEOTdtHOuYFQ\r\npf/T8l2dbXCjVNmrVXDrmsWFKNht9L7Z2j0dw+SgZ/xBjOKBHxqmxqDAnptx\r\nj/vSUfGBcJ0kycJnwNCXmYl/dXMOso6khiuKDe867HxO197DzRip9DXq5PqQ\r\n32C7TAtbVtEJOj/G4x2H7oNddVg4UYKUk9aVnaXrTBag8ctOUEyRrmMDzw9/\r\nwItMvo67KoBUQukSQLWgSpacRyvviORFwE1Jsd7wnAhCHnobLTSiLqkh351g\r\nNlWR9Z/8WiTd2yA0qIy6tFRh/OHHYCUSkGpwDvzS1l1mD+0Z0IZVTCDB77ga\r\nzLx+6O2wyiBfuqrmwiItNc7BSNTncX75fyjJ5RDZzrQ2LUJ3VnGxvvwwkF7z\r\ngjoaadfBRhpIvuGmPeQqXU6EZRndNvA1OM+vbgHXIp6ZJ663qIuAUFcXKTwJ\r\n+n+1n2tbrRGXUjk+/y211XJ4H87U1Dhtgp9kkNx+hDb8BG/1npsyvA9jbK8l\r\n55paKuUINMlV+m7x3vvWuhRhZK+sMRevsFc=\r\n=LIzx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.65_1673415404637_0.5970031837435061"},"_hasShrinkwrap":false},"1.3.43":{"name":"@leanup/cli","version":"1.3.43","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.5.0","deepmerge":"4.2.2","prettier":"2.8.2"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.2","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.43","_nodeVersion":"14.21.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-z6uQS9HnXhU4u3cEiMBazdjMko1tM7wkMVX+CwwPpDKz9yDfx/yAJz5JiMbpjqWuqpp2/6gEvy2njp3QEn9y8w==","shasum":"0a68ad6bdfc18f8e47747315224b3ef87d964a38","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.43.tgz","fileCount":63,"unpackedSize":140172,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFmca1MV+CV369VLZR/fkTO3i8cf76sYp+gFqoFa8S8zAiAYEM7QPhbl1jyqtRKttR1ONtb77sMFS+CDnkFPVYCZdw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjy1pDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr0PhAAgUsuovH/bCgVXjN+f14hqc2aF2dmQxe3vGcjmOAV8miVE6kc\r\nwhjEvvsaMJ+4y2ArNacMT5r4tp10ROB8VKp3Yq2rbXUu+URZvSgtx6hUPdtO\r\ndCr61tSzpV59vXqsBFnCNF0Tvl37g10kI/9V55ZBbBUiY1RLNC7s0Qmq1/kM\r\nNo3d1hyVimRsGtkaj1IEuLJfNKFNKcMNdSJul2vDY8tPl8WxkuDlhMcrvW/0\r\n+RP7U53LD2I/Td0rQ8T309Fp4iS8Nqg7WYVKgp2ogk8/GHxR5JDrmvmJWhvH\r\n1TUamm3Aneb4KKiKXkSb60TnBFqRcYOhRvlR2jk7AGvWrwZlorEBgLEYZnZO\r\nr0JBzmujvw0oQNf+vpNV0KvkDCPQUVXuFB5imT0nvmQ89Dg58at/ejhPBB4F\r\nScm1Ymiy67s/HwMmCrd5HxghxGnx70r2kBNdRwiXOTL4O+cM2aZ2rgltj6ko\r\nrejEn4BB9RhGKTBl5+EKf9jTyd7BxwpgpYX+4WuLuQvvFVdCcTxs2ofCuJfo\r\nn2yFENzy5GLHt/HDIlsUJH90fR0nvnZvhOkj1CjmrBtcRmYxOyqEK+0N/8AR\r\nYtgRg2ghOJ3mS5u72bsTnPq0nzvrc9LUOkuxAl2/CwS3yDE07LRY5nXrCKRu\r\nkA8BpkEBrIsk6/33PailVnolfuTxA4wC3BM=\r\n=Aszr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.43_1674271299265_0.5211028572703131"},"_hasShrinkwrap":false},"1.1.97":{"name":"@leanup/cli","version":"1.1.97","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"7.2.0","deepmerge":"4.2.2","prettier":"2.8.3"},"devDependencies":{"@types/node":"16.18.11","@types/prettier":"2.7.2","typescript":"4.3.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=12 <16","npm":">=6 <8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.1&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.1&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.1.97","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-Zqftopd6+oSOG6ZrVyM4Q7N0PHcB7krrs4XdMODSHPfKwq4HvyeQQSGs/QoW3rDCAwZOWNjSrMAJbGdyvg2QBQ==","shasum":"d5b94bdf2954271b01c6cb7cdd0d1b907e44b043","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.1.97.tgz","fileCount":74,"unpackedSize":148899,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkfYihFaYT93Q8pRQOnPKmv9R+7TimJtZYSTAiliBhIgIgPbjhozcVfzG/7hRcPGCB60hN7HgiQQcs1miALFynvLY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTKPeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpCOg//bBzEfA/+Fv/eM8dfI0eW0beomVkDfa1O179ngQGXG4J/54qX\r\nt4w+g2sKYgmZQO+F+rYbtOtxwEaiIIvApNUcH466bxdFVTQiqQ80vhnchLu5\r\nJkuTYNdO2vBcvpOw3LLvyuN+KmWOu5h3Of1Q2mtFzS2myYIA/lA1H0NUtxos\r\nL8W1229VDkWZfoOCEw48n/lIDbKuNQk0CRj629GizfQCsOMNagufJESyelgj\r\nJUpAi+XVngvm0cDCxiFuv5QyWwdGOWCL3LiWIij7ltWQvUhNn0Pgb+0PLI3J\r\nPHBxB8cjGkqyBddXFVIETn28T1Czw2iMsWgv4vY6RfGFeDvaY5wsiNhliize\r\ndGim35Xhs8fp+/8pZ0j0N0Hklvt//nbSd3k2GYQpid4za7RzAvSyY+EzDtnS\r\nzE71p/mWw74jhXjy64Y3YJsxnOMdVtZo1L3PFRx1tD/a0ViR+NllVnDnuQQy\r\nRRts1e/emxkMAVV3YH0s00sQHgIAiw/54lK1UMulxTTiMyjzUbWX6hf9sC/y\r\n5+IZAkFevYzm0iHT5IWRbqE599BSv+zjCxNFZNImJyYFDZZlyHxNrO7ehz98\r\nKfU93sI99/3FSCfylQ5hlGleVTex4r8LxEkCUkqkzCSk8eAb+3Ug14XrCqcb\r\ni8kDjDFDiAt2u+arTzlK/V/cZitW6M73e+E=\r\n=k9re\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.1.97_1682744286456_0.7233943395851781"},"_hasShrinkwrap":false},"1.3.44":{"name":"@leanup/cli","version":"1.3.44","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.5.0","deepmerge":"4.2.2","prettier":"2.8.3"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.2","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.44","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-fsX3yWabiwL0BQySp94XwF2wtcyUT2h21b7VRUIB+Hoag4x3oKfQHuiN1ApEHp2L9boPlAIZXCk8dU9veeqeJg==","shasum":"171845ded47454f7a6b7939edc42f6e6f4039700","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.44.tgz","fileCount":63,"unpackedSize":140171,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPVK0eGIJYyK8ZpFSSn/cvMelK3qcy2/ZPBM9wWgluGQIgYeIHynJq1J7ZH77DIQmLfamAxMfkSTyK5Ezu07h2Yok="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTKPqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoVHg/8Dn6bN0XgNbVMCNKAHmyo/c39t92AvEF8HJyxQnOajqVJCweS\r\npyZ7ZBrY1kexa6mnBgjemB9RRMExiY1hHBLwhjhIvNLnvcJ+FvV0cID3gX8e\r\nQPgUh5Ved2jLjkOo9QvKSgFVUEHCpf/7xPTm7FivrojXQVAeUyS8xco9GWc7\r\nPyaqZN1jPjF5GfDD1iscD8fpngqGMOoF/CNBzlMk8k5kQZ6xd6MaHDGwLSK+\r\n3Zp4RZAJzG2ZGiO/doH0E+8xTztQk/F6WpgBhjXaAsC65/MCmNmA8L+LoFX+\r\nq5gYMnY7iG6cHTYG/0qdk5GeS1JaEMj44bLCuJEosw47ytyNunBcTATGFGrr\r\nwXdrlHJ+ux93M9eWMWVYyZ6NijhCeajh6v6SwgsoZIE4f3nRwC858UqnG11Q\r\n8LwwTkC6ezhOHpvudYxwpuRgisXN0NAvOxGo0T17xq9F37F+OHbPcXzd58sv\r\nPmn0yIdwV5bX6cdsXuN3Ani9cIA7U7UHrshE8nzE1EyWM+wDvSYTW4O6FFpu\r\nYfaNvrUmG5mzOgUFZHsiUPAMMkh0qxS6xL69W0pp1ic+9RHaPmGTWXAilcUR\r\nfTRF2lyxPk9w26M1Sy8KUwCynhuvyB3uxZgBb3JGXg70aGxV/HvctkBRtXpE\r\nybyXaPkm5nkMyMF0P8ulr8ZwX3MS2WJV4D0=\r\n=sUjx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.44_1682744298447_0.43029020321505196"},"_hasShrinkwrap":false},"1.2.66":{"name":"@leanup/cli","version":"1.2.66","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"8.3.0","deepmerge":"4.2.2","prettier":"2.8.3"},"devDependencies":{"@types/node":"16.18.11","@types/prettier":"2.7.2","typescript":"4.4.4"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","_id":"@leanup/cli@1.2.66","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-mSEhMG/qJ4kqjh45qP3bdhB65JsczvVWA7jIuwhZmuHpFQTDvK9T9RUcRwHIJKGIA+CL1bphcNwKp2zPEsZg0w==","shasum":"9e2937a94d4662c85c530264966bcb14be768e4a","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.2.66.tgz","fileCount":63,"unpackedSize":139937,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1K+aJY6Sbd2PnMVOqxz/9pyQQRz6CHL427yUUoReT2wIgBSju97PyrwQEzSpo8a4/F7luW6uePHyMMQf2j8LuPic="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTKQlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpyww/9GQAAAsINyDsVD8vHfO/05axhcMMQFU2eMlcWJKHCTogsWGok\r\nCob1y+cHk7xz9BG7FFURmOIu6lfgYiUkGDE2gppMIwUeOgfmUac71LdeFbum\r\n3z/Bh3/MilOnu/ZMx7u7iFB401TT+mgkUTpUM7uKFBK6AELSfEu1LqaL/vAM\r\nfsTcriyGsfvcGBJb5YlfGggFlm44iGZ7Vtk1YGukFN4kOcfu64qczxo0d4yr\r\nMLQpyohi0O9j6cLtS22SN3nlU+pHizZTEKqoHQp6vVgXGRWZefE9Y5m8eNbv\r\nEwwtIDsYbTSEGyhfWPB+DTcljJMAb3yyFVHTCSHQDzW8U8Y9OFMw/ZGXZQZ7\r\nE4pMpnqQG1q6eLpf5K3inb/xTLPSY9uyzf7TFDUUO75Px4sTBxfTqEZB8zV7\r\n+X1af9Zmqsu9pWfWTeGQwSTRMzKaLHoHzzkJdvvYav69Ay++WdYkqbN0Nk1+\r\nduqVt1NXE2AEbc7n5wjcXAB3JFwLssy/cfHmtOR31TLIO3brN8nxfvbMyGEi\r\nU2N56vyfmnDM4O7o5loubeS1nS0iYxBMcktRS3YjYFAAwexjvgxItH4uzxwA\r\nZm1INMldrl4ahHlLb05B1srPOuGf60SgtBE90oDeqAzDhNOnlqiGiGqPk/ED\r\ncCZUQL3F0MVu54xYfdev0b7TdsgJsm4c6Ow=\r\n=Bh1G\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.2.66_1682744357663_0.6634097176493707"},"_hasShrinkwrap":false},"1.0.203":{"name":"@leanup/cli","version":"1.0.203","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["babel","eslint","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","lean","compiler","transpiler","graphql","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"@babel/core":"7.20.12","@babel/plugin-proposal-class-properties":"7.18.6","@babel/plugin-proposal-decorators":"7.20.7","@babel/plugin-proposal-optional-chaining":"7.20.7","@babel/preset-env":"7.20.2","@babel/preset-typescript":"7.18.6","@leanup/cli-core-e2e":"1.0.203","@leanup/cli-core-format":"1.0.203","@leanup/cli-core-lint":"1.0.202","@leanup/cli-core-test":"1.0.203","autoprefixer":"10.4.13","babel-loader":"8.3.0","chalk":"4.1.2","commander":"7.2.0","copy-modules-webpack-plugin":"2.2.1","copy-webpack-plugin":"6.4.1","css-loader":"5.2.7","deepmerge":"4.2.2","file-loader":"6.2.0","html-webpack-plugin":"4.5.2","less":"4.1.3","less-loader":"7.3.0","mini-css-extract-plugin":"1.6.2","postcss":"8.4.21","postcss-loader":"4.3.0","prettier":"2.8.3","sass":"1.57.1","sass-loader":"10.4.1","string-replace-loader":"2.3.0","style-loader":"2.0.0","tslib":"2.4.1","webpack":"4.46.0","webpack-cli":"4.10.0","webpack-dev-server":"3.11.3"},"devDependencies":{"@types/node":"15.14.9","tsc":"2.0.4","typescript":"4.3.2"},"peerDependencies":{"typescript":">=3"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc"},"engines":{"node":">=14 <15","npm":">=6 <7"},"gitHead":"7ef6bd1b528bde36bdbb3bd5c93a558185f1ee26","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"250\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<br>\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.0&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.0&type=optional\n[vulnerabilities]: https://snyk.io/test/npm/@leanup/cli/badge.svg\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Create](#create)\n  - [Developing](#developing)\n  - [Building](#building)\n  - [Unit-Testing](#unit-testing)\n  - [Test-Coverage](#test-coverage)\n  - [E2E-Testing](#e2e-testing)\n  - [Formatter](#formatter)\n  - [Linter](#linter)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       |\n| ---------------- | :---------------: | :----: | :------------------------- |\n| [Babel]          |    Transpiler     |   ✔️   | ready                      |\n| [Webpack]        |      Bundler      |   ✔️   | ready                      |\n| [TypeScript]     |     Language      |   ✔️   | ready                      |\n| [Mocha]          | Unit-Test-Runner  |   ✔️   | ready                      |\n| [Chai]           |     Assertion     |   ✔️   | ready                      |\n| [Sinon]          |      Mocking      |   ✔️   | ready                      |\n| [NYC]            |   Code-Coverage   |   ✔️   | ready                      |\n| [ESLint]         |   Code-Checker    |   ✔️   | ready                      |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️   | ready                      |\n| [Allsure]        |      Report       |   ✔️   | ready                      |\n| [Cucumber]       |        BDD        |   ✔️   | ready                      |\n| [robotframework] |        BDD        |   ⌛   | will be evaluated          |\n| [Storybook]      |   Documentation   |   ⌛   | in progress                |\n| [GraphQL]        |        API        |   ✔️   | ready                      |\n| [Workbox]        |        PWA        |   ✔️   | ready                      |\n| [Lerna]          |     Mono-Repo     |   ✔️   | ready                      |\n| [Ant-Design]     |   Design-System   |   ✔️   | proved                     |\n| [Material]       |   Design-System   |   ✔️   | proved                     |\n| [Bootstrap]      |   Design-System   |   ✔️   | proved                     |\n| [Tailwindcss]    |   Design-System   |   ✔️   | proved                     |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️   | ready                      |\n| [Less]           |        CSS        |   ✔️   | ready                      |\n| [Sass]           |        CSS        |   ✔️   | ready                      |\n| [Webhint]        |      Webhint      |   ✔️   | moved \\*\\*\\*               |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛   | will be evaluated \\*\\*\\*\\* |\n| [TSLint]         |   Code-Checker    |   ❌   | removed \\*\\*               |\n| [Cypress]        |  E2E-Test-Runner  |   ❌   | excluded \\*                |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://snyk.io/test/npm/@leanup/cli-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://snyk.io/test/npm/@leanup/cli-angular/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://snyk.io/test/npm/@leanup/cli-angularjs/badge.svg)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://snyk.io/test/npm/@leanup/cli-aurelia/badge.svg)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://snyk.io/test/npm/@leanup/cli-inferno/badge.svg)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://snyk.io/test/npm/@leanup/cli-preact/badge.svg)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://snyk.io/test/npm/@leanup/cli-react/badge.svg)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://snyk.io/test/npm/@leanup/cli-svelte/badge.svg)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://snyk.io/test/npm/@leanup/cli-vue/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://snyk.io/test/npm/@leanup/cli-vue3/badge.svg)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://snyk.io/test/npm/@leanup/cli-addons/badge.svg)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://snyk.io/test/npm/@leanup/cli-cucumber/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://snyk.io/test/npm/@leanup/cli-graphql/badge.svg)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://snyk.io/test/npm/@leanup/cli-pwa/badge.svg)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://snyk.io/test/npm/@leanup/cli-webhint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/form/badge.svg)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/lib/badge.svg)](https://snyk.io/test/npm/@leanup/lib)\n- [`@leanup/material-preact`](https://www.npmjs.com/package/@leanup/material-preact) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-preact/badge.svg)](https://snyk.io/test/npm/@leanup/material-preact)\n- [`@leanup/material-vanilla`](https://www.npmjs.com/package/@leanup/material-vanilla) ⌛ [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/@leanup/material-vanilla/badge.svg)](https://snyk.io/test/npm/@leanup/material-vanilla)\n- @leanup/ul ⌛\n\n## Usage\n\nIf the CLI is also installed globally with `npm install -g @leanup/cli`, you can use the command `lean` directly in the bash.\n\nIf not, you must use `npx` and put it before the command. Like this: `npx lean`\n\n### Help\n\n> `> lean -h` (or `npx lean -h`)\n\n### Create\n\n> `> lean create -h` (or `npx lean create -h`)\n\n### Developing\n\n> `> lean serve -h` (or `npx lean serve -h`)\n\n### Building\n\n> `> lean build -h` (or `npx lean build -h`)\n\n### Unit-Testing\n\n> `> lean test -h` (or `npx lean test -h`)\n\n### Test-Coverage\n\n> `> lean coverage -h` (or `npx lean coverage -h`)\n\n### E2E-Testing\n\n> `> lean e2e -h` (or `npx lean e2e -h`)\n\n### Formatter\n\n> `> lean format -h` (or `npx lean format -h`)\n\n### Linter\n\n> `> lean lint -h` (or `npx lean lint -h`)\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://snyk.io/test/npm/$1/badge.svg)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                               |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://snyk.io/test/npm/@babel/core/badge.svg)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://snyk.io/test/npm/@babel/plugin-proposal-decorators/badge.svg)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://snyk.io/test/npm/@babel/preset-env/badge.svg)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://snyk.io/test/npm/@babel/preset-typescript/badge.svg)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                    @leanup/cli-core-e2e |                                                          [![install size of @leanup/cli-core-e2e](https://packagephobia.now.sh/badge?p=@leanup/cli-core-e2e)](https://packagephobia.now.sh/result?p=@leanup/cli-core-e2e) | [![vulnerabilities of @leanup/cli-core-e2e](https://snyk.io/test/npm/@leanup/cli-core-e2e/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-e2e)                                                          |\n|                 @leanup/cli-core-format |                                                 [![install size of @leanup/cli-core-format](https://packagephobia.now.sh/badge?p=@leanup/cli-core-format)](https://packagephobia.now.sh/result?p=@leanup/cli-core-format) | [![vulnerabilities of @leanup/cli-core-format](https://snyk.io/test/npm/@leanup/cli-core-format/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-format)                                                 |\n|                   @leanup/cli-core-lint |                                                       [![install size of @leanup/cli-core-lint](https://packagephobia.now.sh/badge?p=@leanup/cli-core-lint)](https://packagephobia.now.sh/result?p=@leanup/cli-core-lint) | [![vulnerabilities of @leanup/cli-core-lint](https://snyk.io/test/npm/@leanup/cli-core-lint/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-lint)                                                       |\n|                   @leanup/cli-core-test |                                                       [![install size of @leanup/cli-core-test](https://packagephobia.now.sh/badge?p=@leanup/cli-core-test)](https://packagephobia.now.sh/result?p=@leanup/cli-core-test) | [![vulnerabilities of @leanup/cli-core-test](https://snyk.io/test/npm/@leanup/cli-core-test/badge.svg)](https://snyk.io/test/npm/@leanup/cli-core-test)                                                       |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://snyk.io/test/npm/@types/node/badge.svg)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            autoprefixer |                                                                                          [![install size of chai](https://packagephobia.now.sh/badge?p=autoprefixer)](https://packagephobia.now.sh/result?p=autoprefixer) | [![vulnerabilities of autoprefixer](https://snyk.io/test/npm/autoprefixer/badge.svg)](https://snyk.io/test/npm/autoprefixer)                                                                                  |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://snyk.io/test/npm/babel-loader/badge.svg)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://snyk.io/test/npm/chalk/badge.svg)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://snyk.io/test/npm/commander/badge.svg)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://snyk.io/test/npm/copy-modules-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                     copy-webpack-plugin |                                                             [![install size of copy-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-webpack-plugin) | [![vulnerabilities of copy-webpack-plugin](https://snyk.io/test/npm/copy-webpack-plugin/badge.svg)](https://snyk.io/test/npm/copy-webpack-plugin)                                                             |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://snyk.io/test/npm/css-loader/badge.svg)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://snyk.io/test/npm/file-loader/badge.svg)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                     html-webpack-plugin |                                                             [![install size of html-webpack-plugin](https://packagephobia.now.sh/badge?p=html-webpack-plugin)](https://packagephobia.now.sh/result?p=html-webpack-plugin) | [![vulnerabilities of html-webpack-plugin](https://snyk.io/test/npm/html-webpack-plugin/badge.svg)](https://snyk.io/test/npm/html-webpack-plugin)                                                             |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://snyk.io/test/npm/less/badge.svg)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://snyk.io/test/npm/less-loader/badge.svg)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://snyk.io/test/npm/postcss-loader/badge.svg)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://snyk.io/test/npm/sass/badge.svg)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://snyk.io/test/npm/sass-loader/badge.svg)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://snyk.io/test/npm/string-replace-loader/badge.svg)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://snyk.io/test/npm/style-loader/badge.svg)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://snyk.io/test/npm/webpack/badge.svg)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://snyk.io/test/npm/webpack-cli/badge.svg)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://snyk.io/test/npm/webpack-dev-server/badge.svg)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                            Vulnerabilities                                                            |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://snyk.io/test/npm/chromedriver/badge.svg)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://snyk.io/test/npm/geckodriver/badge.svg)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://snyk.io/test/npm/graphql/badge.svg)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://snyk.io/test/npm/selenium-server/badge.svg)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://snyk.io/test/npm/typescript/badge.svg)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                Vulnerabilities                                                                 |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://snyk.io/test/npm/@leanup/git-hooks/badge.svg)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://snyk.io/test/npm/allure-commandline/badge.svg)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://snyk.io/test/npm/lerna/badge.svg)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://snyk.io/test/npm/workbox-cli/badge.svg)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n","readmeFilename":"README.md","_id":"@leanup/cli@1.0.203","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-i6uEE4P4DNCnT9buizA5JHfaR1oIgE4kab6zQeI5nhiNwOj4CphZf04rBtnQkgeJDVaWgOZ1pbKpaGG0hWg3Jg==","shasum":"a72f464a9ceefb041123089a992a0152aeb817cc","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.0.203.tgz","fileCount":64,"unpackedSize":152164,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFzLmUoSSRxIaMndoMKJyJL+sH7yUPJCJal4rBWBRlSzAiEAv+uRbZYDlzuT5F6J5YSSmJBRcbdIG1f2xbf0bJ4ajC8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTKTSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrC/A/+K8ElHA1O9+VD6jFY9lSm0zZ69P5g5z9W45grHjnV1Bj0XCB2\r\nBXTWl8N0whSkwvkQm6FqBuLPfbAsnYDpMobRQMBFJWLEekhuIzrqBE+D6X8y\r\nJdK0kDJlhTHPjWTBEvTUihZnew1Wp8RDeQ+7CSwSbLHjps7Q4JD9MLAwWJPA\r\nOj5vKeNjZuZoI76UmA3I93wptbQrUfIGGqUK3IuzobcOPD+w4Q0Gt172sB3h\r\nmmMkQFGrKS4LP0Mz5bLnhNRlpqMAwLwXSn6bOZPsFIm2M/V0watVz5vhZdlY\r\n+9pTsQhSds/DA5W1Vp/gCNa8A5UhPptt5y+03tJaQRA6ASlbfr9ybMGPX6sa\r\ni/STW7xWBOUgQ4zFxevEjHkJheIro+yVJx/lwaKBYGTKjWZVVt6P9fNth1bO\r\n7C/rzDUaB0JzropkpRv6uDIg9yGmb92DddxT9G9+WJNrxsE29J8ZYl4YGhp/\r\ndYzjmReGQTCOGKVTjiSP3tHXT8Nn+T1fRYJADPa/d0CMG0pJ/1iWpJm5Px0k\r\nTB8sFOmwe0bPUZ6ZpbRIYDYblNu7wceohAGBm5HeaXLS+UArsFOpET0mpp0J\r\nn8zJZhFLs8YzkBV239AgAWS6rktAjEo/8SO8gmBvgDf5o2tPExQ5/tCTaxEt\r\n6p/H6jiDpMmHJTg+70Zexx1YkvLMDtt5qhs=\r\n=dusE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.0.203_1682744530635_0.5849239604791401"},"_hasShrinkwrap":false},"1.3.46":{"name":"@leanup/cli","version":"1.3.46","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.5.0","deepmerge":"4.3.1","prettier":"2.8.8"},"devDependencies":{"@types/node":"17.0.45","@types/prettier":"2.7.3","typescript":"4.5.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"engines":{"node":">=14 <=18","npm":">=6 <=8"},"_id":"@leanup/cli@1.3.46","_nodeVersion":"14.21.3","_npmVersion":"6.14.18","dist":{"integrity":"sha512-18/2RYnCkuJvxDhHdpT0wPi0jroJGw+tMoKnXIOwh/RW1iARjNJXNqxDX+xn7rYgIbwx5z9GiZw7tKaAapyHRQ==","shasum":"58196800a9c6a436add04fef69b7a0cecae4201f","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.46.tgz","fileCount":63,"unpackedSize":140169,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFEl3OEXmpjDm8y9K3DrjwLdOmd0D4PrmvFFQ60AOh+9AiEAuqZOGJ2U6ZlDdWYdYaGOj3nECDYVBUozfUb1WviNdLU="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.46_1694486730294_0.10643126311852913"},"_hasShrinkwrap":false},"1.3.47":{"name":"@leanup/cli","version":"1.3.47","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.5.0","deepmerge":"4.3.1","prettier":"2.8.8"},"devDependencies":{"@types/node":"20.6.0","@types/prettier":"2.7.3","typescript":"5.2.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"gitHead":"53c46c78b411e77680b2f0f05a596a8de9b31984","_id":"@leanup/cli@1.3.47","_nodeVersion":"18.17.1","_npmVersion":"9.6.7","dist":{"integrity":"sha512-Fhf543WHyCvC8WRv2ydIa7OG2JbZmE+aaGnF/z8PWWUUiLRAPmsYsS5PcIPgv53iqLDkNX7xOD73iWsueed8QA==","shasum":"89b36bbb87955177c05df507cf54517fee687781","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.47.tgz","fileCount":63,"unpackedSize":140102,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCD/cyO1RuEY5a8+z6Ko2CqDjrsnlBF5h5p7obwC+A0hgIhAO5/AtUAkMycUTwCmFVgD5ILPLuZRU3ubtcT7W1qmCkG"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.47_1694563717112_0.40134121135758916"},"_hasShrinkwrap":false},"1.3.48":{"name":"@leanup/cli","version":"1.3.48","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.5.0","deepmerge":"4.3.1","prettier":"2.8.8"},"devDependencies":{"@types/node":"20.6.0","@types/prettier":"2.7.3","typescript":"5.2.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"gitHead":"ca94a1374c1338d97e08b97e4bb0b4ad391d5259","_id":"@leanup/cli@1.3.48","_nodeVersion":"18.17.1","_npmVersion":"9.6.7","dist":{"integrity":"sha512-NbObhw4WEBPxe3k6LModQA2msMZkXpn+h6zRkyCl33VnO1581qIWiJT2s46dxEQ+uuXC+HbY3HjYswS45qDZJw==","shasum":"13b067e45b889bafcbf9429a7bf72fd0b29ec050","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.48.tgz","fileCount":63,"unpackedSize":140096,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGIkQb7HFTyyvLeslCz22NA9bX2bM1zyzuNbaaGfz5mVAiAJgNIOE9JRCQTlNwxkMQaO6QLEOIsojYJoUSqxI3WWKQ=="}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.48_1694591108585_0.8354611734207491"},"_hasShrinkwrap":false},"1.3.49":{"name":"@leanup/cli","version":"1.3.49","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.5.0","deepmerge":"4.3.1","prettier":"2.8.8"},"devDependencies":{"@types/node":"20.10.5","@types/prettier":"2.7.3","typescript":"5.2.2"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"_id":"@leanup/cli@1.3.49","gitHead":"0ef94336b00e9152dada10dacb3001d7f8e54088","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-iIIqkXAL121YsFZ/MGGHYIFJdt9v1HDI1YDq8eD4jYmhJpwsOdVftfCAhLadsc4tA2WfT3V+3oEHBJO0agutCA==","shasum":"478c57e596532b861c3d0c272819331e95228864","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.49.tgz","fileCount":63,"unpackedSize":140097,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9Mm8lLBQGDnIBL6d07J0ZK1iZcRqTXf2I/SfUtHP4GgIhAOiKG04/gjXYbwXRl5QXcFWz/Cum1/+5az4f3VRMj6Ys"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.49_1703062121881_0.5228934807170202"},"_hasShrinkwrap":false},"1.3.50":{"name":"@leanup/cli","version":"1.3.50","description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"homepage":"https://leanupjs.org","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"bin":{"lean":"lib/cli.js","leanup":"lib/cli.js"},"dependencies":{"chalk":"4.1.2","commander":"9.5.0","deepmerge":"4.3.1","prettier":"2.8.8"},"devDependencies":{"@types/node":"20.12.7","@types/prettier":"2.7.3","typescript":"5.4.5"},"scripts":{"postinstall":"node postinstall.js","prepack":"cp ../../../README.md template/ && rm -rf lib && tsc -p tsconfig.json && tsc"},"_id":"@leanup/cli@1.3.50","gitHead":"7c44d80257917da3c2086edbe39246cec8a16a39","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-28AxCijuZfub9oX5Z2uQNeWK+bqzIiJy6McUwAnfDiMGo9b8C2SeH7dZv73OotcnLjUJBPHxdZ/F8YUnkC7w1A==","shasum":"4a6e2696416ca92e57dc02bea37a3d28bdced8c5","tarball":"https://registry.npmjs.org/@leanup/cli/-/cli-1.3.50.tgz","fileCount":63,"unpackedSize":140511,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgycpMrhEvu/qI2/vzkc6RQANsJJmO2gWdVITzPNhbTQIhAPsLAkfFllS28jZKviuHVQbHORTaU4WoqlEp3WDgmWFR"}]},"_npmUser":{"name":"m.oppitz","email":"npmjs@martinoppitz.com"},"directories":{},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cli_1.3.50_1713926324824_0.9269691916012031"},"_hasShrinkwrap":false}},"time":{"created":"2020-01-07T04:34:26.693Z","1.0.0-rc.0":"2020-01-07T04:34:27.071Z","modified":"2024-04-24T02:38:45.257Z","1.0.0-rc.1":"2020-01-07T04:35:55.137Z","1.0.0-rc.2":"2020-01-07T04:40:07.673Z","1.0.0-rc.3":"2020-01-07T19:54:32.574Z","1.0.0-rc.4":"2020-01-07T20:01:24.369Z","1.0.0-rc.5":"2020-01-07T20:12:10.017Z","1.0.0-rc.6":"2020-01-08T08:21:14.221Z","1.0.0-rc.7":"2020-01-08T10:10:40.518Z","1.0.0-rc.8":"2020-01-10T18:58:54.083Z","1.0.0-rc.9":"2020-01-10T19:04:55.280Z","1.0.0-rc.10":"2020-01-10T19:24:54.967Z","1.0.0-rc.11":"2020-01-10T20:46:27.334Z","1.0.0-rc.12":"2020-01-10T20:48:00.899Z","1.0.0-rc.13":"2020-01-10T20:50:30.410Z","1.0.0-rc.14":"2020-01-11T05:47:49.820Z","1.0.0-rc.15":"2020-01-11T05:56:10.051Z","1.0.0-rc.16":"2020-01-12T19:01:28.125Z","1.0.0-rc.17":"2020-01-12T19:38:10.692Z","1.0.0-rc.18":"2020-01-13T05:29:04.553Z","1.0.0-rc.19":"2020-01-13T07:33:51.599Z","1.0.0-rc.20":"2020-01-13T07:35:15.159Z","1.0.0-rc.21":"2020-01-13T07:55:13.362Z","1.0.0-rc.22":"2020-01-14T03:26:01.260Z","1.0.0-rc.23":"2020-01-16T04:31:14.076Z","1.0.0-rc.24":"2020-01-16T05:06:20.385Z","1.0.0-rc.25":"2020-01-16T05:23:50.728Z","1.0.0-rc.26":"2020-01-16T21:02:51.364Z","1.0.0-rc.27":"2020-01-17T04:28:01.689Z","1.0.0-rc.28":"2020-01-17T04:39:48.006Z","1.0.0-rc.29":"2020-01-17T04:44:01.502Z","1.0.0-rc.30":"2020-01-17T04:54:49.515Z","1.0.0-rc.31":"2020-01-17T19:11:21.734Z","1.0.0-rc.32":"2020-01-17T20:49:21.281Z","1.0.0-rc.33":"2020-01-18T06:22:30.796Z","1.0.0-rc.34":"2020-01-18T06:56:43.544Z","1.0.0-rc.35":"2020-01-18T07:25:41.241Z","1.0.0-rc.37":"2020-01-19T05:39:59.655Z","1.0.0-rc.38":"2020-01-19T06:01:49.099Z","1.0.0-rc.39":"2020-01-19T16:27:57.086Z","1.0.0-rc.40":"2020-01-19T16:45:47.856Z","1.0.0-rc.42":"2020-01-19T18:42:10.516Z","1.0.0-rc.43":"2020-01-20T04:47:38.037Z","1.0.0-rc.44":"2020-01-20T05:10:49.518Z","1.0.0-rc.45":"2020-01-20T17:38:19.680Z","1.0.0-rc.46":"2020-01-21T03:25:32.554Z","1.0.0-rc.47":"2020-01-21T03:35:49.836Z","1.0.0-rc.48":"2020-01-21T03:48:25.811Z","1.0.0-rc.49":"2020-01-21T03:59:12.924Z","1.0.0-rc.50":"2020-01-21T04:04:23.082Z","1.0.0-rc.51":"2020-01-21T04:23:41.215Z","1.0.0-rc.52":"2020-01-21T04:50:27.938Z","1.0.0-rc.53":"2020-01-21T04:54:20.554Z","1.0.0-rc.54":"2020-01-21T09:16:22.204Z","1.0.0-rc.55":"2020-01-21T09:35:38.415Z","1.0.0-rc.56":"2020-01-21T10:06:14.019Z","1.0.0-rc.57":"2020-01-21T10:13:20.128Z","1.0.0-rc.58":"2020-01-21T10:44:32.883Z","1.0.0-rc.60":"2020-01-21T12:39:56.819Z","1.0.0-rc.61":"2020-01-21T13:39:19.229Z","1.0.0-rc.62":"2020-01-21T20:30:36.562Z","1.0.0-rc.65":"2020-01-22T02:20:02.352Z","1.0.0-rc.66":"2020-01-22T02:23:14.473Z","1.0.0-rc.67":"2020-01-22T04:03:43.499Z","1.0.0-rc.68":"2020-01-22T04:13:38.930Z","1.0.0-rc.69":"2020-01-22T06:08:29.902Z","1.0.0-rc.70":"2020-01-22T06:23:10.879Z","1.0.0-rc.71":"2020-01-22T06:32:55.513Z","1.0.0-rc.72":"2020-01-22T19:53:30.335Z","1.0.0-rc.73":"2020-01-22T20:56:42.859Z","1.0.0-rc.74":"2020-01-23T04:50:19.876Z","1.0.0-rc.75":"2020-01-23T04:59:13.285Z","1.0.0-rc.76":"2020-01-23T05:12:51.788Z","1.0.0-rc.77":"2020-01-23T20:09:48.630Z","1.0.0-rc.78":"2020-01-24T00:42:47.419Z","1.0.0-rc.79":"2020-01-24T00:58:59.177Z","1.0.0-rc.80":"2020-01-24T02:21:01.624Z","1.0.0-rc.81":"2020-01-24T02:36:23.834Z","1.0.0-rc.82":"2020-01-25T20:18:29.874Z","1.0.0-rc.83":"2020-01-25T20:43:39.637Z","1.0.0-rc.84":"2020-01-25T20:56:49.825Z","1.0.0-rc.85":"2020-01-25T21:40:43.816Z","1.0.0-rc.86":"2020-01-25T22:03:19.628Z","1.0.0-rc.87":"2020-01-25T22:24:43.638Z","1.0.0-rc.88":"2020-01-25T23:16:02.049Z","1.0.0-rc.89":"2020-01-26T00:43:58.814Z","1.0.0-rc.90":"2020-01-27T06:51:40.891Z","1.0.0-rc.91":"2020-01-27T06:57:14.251Z","1.0.0-rc.92":"2020-01-27T16:56:41.855Z","1.0.0-rc.93":"2020-01-27T17:30:37.416Z","1.0.0-rc.94":"2020-01-28T00:49:01.539Z","1.0.0-rc.95":"2020-01-28T00:56:34.364Z","1.0.0-rc.96":"2020-01-28T01:44:12.723Z","1.0.0-rc.99":"2020-01-29T07:51:49.624Z","1.0.0-rc.100":"2020-01-29T09:51:20.457Z","1.0.0-rc.101":"2020-01-29T13:51:18.512Z","1.0.0-rc.102":"2020-01-29T13:55:18.487Z","1.0.0-rc.103":"2020-01-29T13:57:07.911Z","1.0.0-rc.104":"2020-01-29T14:18:51.211Z","1.0.0-rc.105":"2020-01-29T14:20:19.900Z","1.0.0-rc.106":"2020-01-29T14:34:54.395Z","1.0.0-rc.107":"2020-01-29T14:54:19.555Z","1.0.0-rc.108":"2020-01-29T15:01:34.594Z","1.0.0-rc.109":"2020-01-29T15:17:51.561Z","1.0.0-rc.110":"2020-01-29T15:23:53.585Z","1.0.0-rc.111":"2020-01-30T14:31:16.750Z","1.0.0-rc.112":"2020-01-30T14:45:15.480Z","1.0.0-rc.113":"2020-01-30T15:26:56.998Z","1.0.0-rc.114":"2020-01-30T15:46:56.705Z","1.0.0-rc.115":"2020-01-30T15:51:20.474Z","1.0.0-rc.116":"2020-01-30T15:56:08.636Z","1.0.0-rc.117":"2020-01-30T15:59:52.928Z","1.0.0-rc.118":"2020-01-30T16:10:15.181Z","1.0.0-rc.119":"2020-01-30T16:13:03.319Z","1.0.0-rc.120":"2020-01-30T16:18:29.722Z","1.0.0-rc.121":"2020-01-30T22:30:50.745Z","1.0.0-rc.122":"2020-01-30T23:34:20.961Z","1.0.0-rc.123":"2020-01-31T10:58:15.250Z","1.0.0-rc.124":"2020-01-31T14:05:31.433Z","1.0.0-rc.125":"2020-02-01T15:06:32.208Z","1.0.0-rc.126":"2020-02-01T18:57:25.644Z","1.0.0-rc.127":"2020-02-01T19:33:51.963Z","1.0.0-rc.128":"2020-02-01T19:47:37.909Z","1.0.0-rc.129":"2020-02-01T20:02:37.474Z","1.0.0-rc.130":"2020-02-02T00:07:45.037Z","1.0.0-rc.131":"2020-02-02T01:08:49.254Z","1.0.0-rc.132":"2020-02-02T01:27:44.280Z","1.0.0-rc.133":"2020-02-03T18:49:58.259Z","1.0.0-rc.134":"2020-02-03T19:28:09.133Z","1.0.0-rc.135":"2020-02-05T07:37:20.877Z","1.0.0-rc.136":"2020-02-05T16:05:57.337Z","1.0.0-rc.137":"2020-02-05T17:03:24.798Z","1.0.0-rc.138":"2020-02-07T10:45:53.222Z","1.0.0-rc.139":"2020-02-11T19:56:13.123Z","1.0.0-rc.140":"2020-02-11T20:08:32.607Z","1.0.0-rc.141":"2020-02-16T20:24:53.000Z","1.0.0-rc.142":"2020-02-19T19:48:31.327Z","1.0.0-rc.143":"2020-02-19T19:57:08.709Z","1.0.0-rc.144":"2020-02-21T19:46:03.873Z","1.0.0-rc.145":"2020-02-21T19:55:39.323Z","1.0.0-rc.146":"2020-02-21T21:08:11.179Z","1.0.0-rc.147":"2020-02-27T01:02:25.602Z","1.0.0-rc.148":"2020-02-27T01:52:04.229Z","1.0.0-rc.149":"2020-02-27T01:54:38.245Z","1.0.0-rc.150":"2020-02-27T02:09:20.343Z","1.0.0-rc.151":"2020-02-27T02:16:46.891Z","1.0.0-rc.152":"2020-02-27T09:43:17.040Z","1.0.0-rc.153":"2020-03-02T15:33:02.575Z","1.0.0-rc.154":"2020-03-06T01:49:03.657Z","1.0.0-rc.155":"2020-03-06T02:20:09.929Z","1.0.0-rc.156":"2020-03-06T02:52:22.505Z","1.0.0-rc.157":"2020-03-06T03:04:28.904Z","1.0.0-rc.158":"2020-03-06T03:19:16.402Z","1.0.0-rc.159":"2020-03-06T03:33:08.738Z","1.0.0-rc.160":"2020-03-06T03:41:25.311Z","1.0.0-rc.161":"2020-03-06T03:50:49.119Z","1.0.0-rc.162":"2020-03-06T04:14:55.539Z","1.0.0-rc.163":"2020-03-10T20:19:03.651Z","1.0.0-rc.164":"2020-03-12T02:29:57.272Z","1.0.0-rc.165":"2020-03-12T02:35:08.341Z","1.0.0-rc.166":"2020-03-12T02:45:08.923Z","1.0.0-rc.167":"2020-03-12T09:14:32.361Z","1.0.0-rc.168":"2020-03-26T04:07:14.658Z","1.0.0-rc.169":"2020-03-26T04:12:45.448Z","1.0.0-rc.170":"2020-03-31T21:09:04.943Z","1.0.0-rc.173":"2020-04-03T01:14:33.173Z","1.0.0-rc.174":"2020-04-03T01:18:43.927Z","1.0.0-rc.175":"2020-04-03T01:25:01.651Z","1.0.0-rc.176":"2020-04-03T18:07:51.691Z","1.0.0-rc.177":"2020-04-15T02:48:10.312Z","1.0.0-rc.179":"2020-04-16T22:28:37.004Z","1.0.0-rc.180":"2020-04-17T00:20:31.687Z","1.0.0-rc.181":"2020-04-17T01:30:01.065Z","1.0.0-rc.184":"2020-04-20T17:57:33.232Z","1.0.0-rc.185":"2020-04-21T20:07:21.923Z","1.0.0-rc.186":"2020-04-24T08:05:37.387Z","1.0.0-rc.187":"2020-04-24T08:23:57.345Z","1.0.0-rc.188":"2020-04-24T08:27:13.888Z","1.0.0-rc.189":"2020-04-24T09:22:20.185Z","1.0.0-rc.190":"2020-04-24T19:03:16.859Z","1.0.0-rc.191":"2020-04-24T19:35:50.807Z","1.0.0-rc.192":"2020-04-24T21:41:27.230Z","1.0.0-rc.193":"2020-04-26T20:18:42.868Z","1.0.0-rc.194":"2020-04-27T05:50:58.442Z","1.0.0-rc.195":"2020-04-27T06:01:00.202Z","1.0.0-rc.196":"2020-04-28T09:25:58.469Z","1.0.0-rc.197":"2020-04-28T14:20:28.301Z","1.0.0-rc.198":"2020-04-29T20:21:25.737Z","1.0.0-rc.199":"2020-04-29T21:22:02.984Z","1.0.0-rc.200":"2020-04-29T21:50:17.211Z","1.0.0-rc.201":"2020-04-29T22:01:28.519Z","1.0.0-rc.202":"2020-05-01T02:57:57.853Z","1.0.0-rc.203":"2020-05-01T03:47:31.891Z","1.0.0-rc.204":"2020-05-01T03:57:11.335Z","1.0.0-rc.205":"2020-05-01T04:32:11.071Z","1.0.0-rc.206":"2020-05-01T04:37:48.465Z","1.0.0-rc.207":"2020-05-01T05:03:43.108Z","1.0.0-rc.208":"2020-05-02T19:42:27.816Z","1.0.0-rc.209":"2020-05-03T20:54:17.974Z","1.0.0-rc.210":"2020-05-03T21:34:43.399Z","1.0.0-rc.211":"2020-05-03T21:38:24.528Z","1.0.0-rc.212":"2020-05-04T17:55:54.058Z","1.0.0-rc.213":"2020-05-04T18:32:41.083Z","1.0.0-rc.214":"2020-05-04T19:32:48.655Z","1.0.0-rc.215":"2020-05-05T04:48:08.509Z","1.0.0-rc.216":"2020-05-05T05:11:09.848Z","1.0.0-rc.217":"2020-05-06T21:00:14.535Z","1.0.0-rc.218":"2020-05-07T19:08:29.368Z","1.0.0-rc.219":"2020-05-09T05:07:14.911Z","1.0.0-rc.220":"2020-05-10T03:26:08.609Z","1.0.0-rc.221":"2020-05-10T03:54:54.981Z","1.0.0-rc.222":"2020-05-11T03:52:09.931Z","1.0.0-rc.223":"2020-05-13T18:50:54.435Z","1.0.0-rc.224":"2020-05-13T21:44:31.089Z","1.0.0-rc.225":"2020-05-13T22:42:08.234Z","1.0.0-rc.226":"2020-05-15T09:43:11.475Z","1.0.0-rc.227":"2020-05-16T04:53:58.971Z","1.0.0-rc.228":"2020-05-16T17:00:32.559Z","1.0.0-rc.229":"2020-05-18T06:04:24.470Z","1.0.0-rc.230":"2020-05-19T05:04:39.454Z","1.0.0-rc.231":"2020-05-19T05:12:28.145Z","1.0.0-rc.232":"2020-05-19T22:25:53.546Z","1.0.0-rc.233":"2020-05-19T22:45:19.494Z","1.0.0-rc.234":"2020-05-19T23:20:41.584Z","1.1.0-rc.0":"2020-05-21T04:11:56.412Z","1.1.0-rc.1":"2020-05-21T04:39:30.974Z","1.1.0-rc.2":"2020-05-23T05:02:20.240Z","1.1.0-rc.3":"2020-05-23T05:25:02.948Z","1.0.0-rc.235":"2020-05-23T07:29:10.322Z","1.1.0-rc.4":"2020-05-23T07:46:13.207Z","1.1.0-rc.5":"2020-05-24T05:09:38.285Z","1.1.0-rc.6":"2020-05-24T11:06:59.710Z","1.1.0-rc.7":"2020-05-25T02:49:44.345Z","1.0.0-rc.236":"2020-05-26T06:59:38.354Z","1.1.0-rc.8":"2020-05-26T08:17:20.886Z","1.1.0-rc.10":"2020-05-26T20:10:35.620Z","1.1.0-rc.11":"2020-05-26T20:16:17.478Z","1.0.0-rc.237":"2020-05-26T20:20:29.857Z","1.1.0-rc.12":"2020-05-27T19:14:33.267Z","1.1.0-rc.13":"2020-05-28T19:25:50.500Z","1.1.0-rc.14":"2020-05-28T20:32:35.644Z","1.1.0-rc.15":"2020-05-29T18:27:57.038Z","1.1.0-rc.16":"2020-05-29T18:42:32.433Z","1.1.0-rc.17":"2020-06-03T00:08:14.263Z","1.1.0-rc.18":"2020-06-03T09:52:10.938Z","1.1.0-rc.19":"2020-06-04T18:16:43.762Z","1.1.0-rc.20":"2020-06-06T03:48:08.529Z","1.1.0-rc.22":"2020-06-08T21:26:55.138Z","1.1.0-rc.23":"2020-06-10T02:42:17.919Z","1.1.0-rc.24":"2020-06-10T03:55:23.366Z","1.1.0-rc.25":"2020-06-11T05:47:06.717Z","1.1.0-mocha-v8.1":"2020-06-11T06:03:08.097Z","1.1.0-mocha-v8.2":"2020-06-11T15:11:14.512Z","1.1.0-rc.26":"2020-06-12T02:48:08.420Z","1.1.0-rc.27":"2020-06-12T19:22:58.697Z","1.1.0-rc.28":"2020-06-16T03:14:41.034Z","1.1.0-rc.29":"2020-06-17T04:29:28.648Z","1.1.0-rc.30":"2020-06-18T18:52:50.960Z","1.1.0-rc.31":"2020-06-21T05:29:07.851Z","1.1.0-rc.32":"2020-06-21T18:58:03.820Z","1.1.0-rc.33":"2020-06-23T06:15:27.784Z","1.1.0-rc.34":"2020-06-24T05:41:04.374Z","1.1.0-rc.35":"2020-06-25T04:26:58.245Z","1.1.0-rc.36":"2020-06-25T04:47:40.742Z","1.1.0-rc.37":"2020-06-29T21:00:35.256Z","1.1.0-rc.38":"2020-06-30T19:11:03.570Z","1.1.0-rc.39":"2020-07-02T04:40:47.482Z","1.1.0-rc.40":"2020-07-02T15:21:00.674Z","1.1.0-rc.41":"2020-07-03T07:26:32.272Z","1.1.0-rc.42":"2020-07-03T07:44:19.604Z","1.1.0-rc.43":"2020-07-03T18:35:42.736Z","1.1.0-rc.44":"2020-07-04T23:35:34.644Z","1.1.0-rc.45":"2020-07-04T23:59:02.866Z","1.1.0-rc.46":"2020-07-05T15:24:57.196Z","1.1.0-rc.49":"2020-07-07T02:11:06.436Z","1.1.0-rc.50":"2020-07-07T02:40:07.318Z","1.1.0-rc.51":"2020-07-07T03:51:46.239Z","1.1.0-rc.52":"2020-07-07T04:04:57.590Z","1.1.0-rc.53":"2020-07-07T04:32:13.799Z","1.1.0-rc.54":"2020-07-08T18:05:25.150Z","1.1.0-rc.55":"2020-07-09T02:20:24.549Z","1.1.0-rc.56":"2020-07-10T02:54:13.554Z","1.1.0-rc.57":"2020-07-10T04:18:43.347Z","1.1.0-rc.58":"2020-07-10T04:22:56.496Z","1.1.0-rc.59":"2020-07-10T04:30:57.801Z","1.1.0-rc.60":"2020-07-10T05:47:20.119Z","1.1.0-rc.61":"2020-07-10T07:42:46.820Z","1.1.0-rc.62":"2020-07-10T09:23:11.923Z","1.1.0-rc.63":"2020-07-10T09:53:50.538Z","1.1.0-rc.64":"2020-07-10T11:18:02.098Z","1.1.0-rc.65":"2020-07-10T11:36:46.398Z","1.1.0-rc.66":"2020-07-10T12:38:25.175Z","1.1.0-rc.67":"2020-07-10T13:45:56.409Z","1.1.0-rc.68":"2020-07-10T15:29:11.259Z","1.1.0-rc.69":"2020-07-11T04:11:13.875Z","1.1.0-rc.70":"2020-07-11T04:35:46.579Z","1.1.0-rc.71":"2020-07-11T04:47:52.243Z","1.1.0-rc.73":"2020-07-13T20:57:30.007Z","1.1.0-rc.74":"2020-07-15T03:26:43.250Z","1.1.0-rc.75":"2020-07-17T03:19:31.504Z","1.1.0-rc.76":"2020-07-18T19:01:30.788Z","1.1.0-rc.77":"2020-07-18T19:24:43.652Z","1.1.0-rc.79":"2020-07-18T20:08:21.034Z","1.1.0-rc.80":"2020-07-19T19:44:34.880Z","1.1.0-rc.81":"2020-07-21T22:49:46.083Z","1.1.0-rc.82":"2020-07-21T23:37:53.975Z","1.1.0-rc.83":"2020-07-22T00:08:09.282Z","1.1.0-rc.84":"2020-07-23T02:30:20.206Z","1.1.0-rc.85":"2020-07-23T03:25:29.731Z","1.1.0-rc.86":"2020-07-23T03:55:39.903Z","1.1.0-rc.88":"2020-07-23T04:54:19.083Z","1.1.0-rc.89":"2020-07-24T04:29:18.717Z","1.1.0-rc.90":"2020-07-25T03:59:24.651Z","1.1.0-rc.91":"2020-07-27T04:35:03.964Z","1.1.0-rc.93":"2020-07-31T13:32:23.854Z","1.1.0-rc.94":"2020-07-31T14:23:39.630Z","1.1.0-rc.95":"2020-07-31T14:52:53.000Z","1.1.0-rc.96":"2020-08-02T07:42:05.423Z","1.2.0-beta.0":"2020-08-02T18:12:13.885Z","1.2.0-beta.1":"2020-08-02T18:35:57.191Z","1.2.0-beta.2":"2020-08-02T19:05:00.820Z","1.2.0-beta.3":"2020-08-02T19:20:09.884Z","1.2.0-beta.4":"2020-08-02T20:47:37.101Z","1.2.0-beta.5":"2020-08-03T06:02:49.823Z","1.2.0-beta.6":"2020-08-03T06:13:30.999Z","1.2.0-beta.7":"2020-08-03T12:18:14.650Z","1.2.0-beta.8":"2020-08-03T12:36:43.358Z","1.2.0-beta.9":"2020-08-03T12:53:09.890Z","1.2.0-beta.10":"2020-08-03T13:21:20.228Z","1.2.0-beta.11":"2020-08-03T14:30:55.556Z","1.2.0-rc.0":"2020-08-03T20:41:12.455Z","1.2.0-rc.1":"2020-08-03T21:18:32.497Z","1.2.0-rc.2":"2020-08-03T21:21:28.787Z","1.2.0-rc.3":"2020-08-03T21:22:56.372Z","1.2.0-rc.4":"2020-08-03T21:24:33.479Z","1.2.0-rc.5":"2020-08-03T21:34:28.631Z","1.2.0-rc.6":"2020-08-03T22:09:12.906Z","1.2.0-rc.7":"2020-08-04T05:07:33.220Z","1.2.0-rc.8":"2020-08-04T05:33:28.348Z","1.2.0-rc.9":"2020-08-04T05:54:33.428Z","1.2.0-rc.10":"2020-08-04T07:17:48.679Z","1.2.0-rc.11":"2020-08-04T07:46:17.539Z","1.2.0-rc.12":"2020-08-04T08:10:31.866Z","1.2.0-rc.13":"2020-08-04T08:42:49.933Z","1.2.0-rc.15":"2020-08-04T20:14:07.187Z","1.2.0-rc.16":"2020-08-04T21:13:19.088Z","1.2.0-rc.17":"2020-08-04T21:42:46.736Z","1.2.0-rc.20":"2020-08-06T04:37:52.044Z","1.2.0-rc.21":"2020-08-06T04:42:17.864Z","1.2.0-rc.22":"2020-08-09T10:35:03.926Z","1.2.0-rc.23":"2020-08-11T16:41:54.190Z","1.2.0-rc.25":"2020-08-12T20:25:57.610Z","1.2.0-rc.27":"2020-08-19T04:36:09.812Z","1.2.0-rc.30":"2020-08-20T03:29:22.909Z","1.2.0-rc.31":"2020-08-20T04:00:30.308Z","1.0.0-beta.0":"2020-08-21T04:03:39.304Z","1.0.0-beta.1":"2020-08-22T01:12:32.683Z","1.0.0-beta.2":"2020-08-22T01:22:28.393Z","1.0.0-beta.3":"2020-08-22T01:56:37.344Z","1.0.0-beta.4":"2020-08-22T02:21:58.986Z","1.0.0-beta.6":"2020-08-22T04:15:37.819Z","1.0.0-beta.7":"2020-08-23T03:35:30.618Z","1.0.0-beta.8":"2020-08-23T03:55:18.018Z","1.0.0-rc.500":"2020-08-23T04:43:31.024Z","1.0.0-rc.501":"2020-08-23T05:23:45.799Z","1.0.0-rc.502":"2020-08-23T14:11:17.774Z","1.0.0-rc.504":"2020-08-23T16:16:45.684Z","1.0.0-rc.505":"2020-08-23T19:29:48.430Z","1.0.0-rc.506":"2020-08-23T19:58:48.506Z","1.0.0-rc.508":"2020-08-24T04:28:13.252Z","1.0.0-rc.509":"2020-08-25T02:42:56.235Z","1.0.0-rc.510":"2020-08-25T18:57:58.903Z","1.0.0-rc.511":"2020-08-26T20:08:27.221Z","1.0.0-rc.512":"2020-08-27T19:25:50.229Z","1.0.0-rc.513":"2020-08-31T03:48:58.902Z","1.0.0-rc.514":"2020-08-31T22:09:49.474Z","1.0.0-rc.515":"2020-08-31T22:14:28.869Z","1.0.0-rc.516":"2020-09-01T23:52:59.650Z","1.0.0-rc.517":"2020-09-02T23:09:00.705Z","1.0.0-rc.518":"2020-09-02T23:34:18.496Z","1.0.0-rc.519":"2020-09-03T00:06:47.442Z","1.0.0-rc.520":"2020-09-03T00:29:30.474Z","1.0.0-rc.521":"2020-09-03T10:39:00.128Z","1.0.0-rc.522":"2020-09-03T16:25:16.454Z","1.0.0-rc.523":"2020-09-04T17:57:50.157Z","1.0.0-rc.524":"2020-09-05T19:24:36.167Z","1.0.0-rc.525":"2020-09-07T01:38:28.142Z","1.0.0-rc.526":"2020-09-08T02:44:49.797Z","1.0.0-rc.527":"2020-09-09T02:36:17.333Z","1.0.0":"2020-09-10T15:13:39.038Z","1.0.1":"2020-09-11T05:16:32.164Z","1.0.2":"2020-09-13T05:20:33.983Z","1.0.3":"2020-09-14T03:51:15.482Z","1.0.4":"2020-09-15T08:06:22.424Z","1.0.5":"2020-09-17T07:21:51.902Z","1.0.6":"2020-09-18T04:03:32.106Z","1.1.0-rc.100":"2020-09-18T04:03:50.009Z","1.1.0-rc.101":"2020-09-18T06:22:00.553Z","1.1.0-rc.102":"2020-09-18T08:28:18.088Z","1.0.7":"2020-09-19T04:58:14.485Z","1.0.8":"2020-09-22T02:56:40.660Z","1.1.0-rc.104":"2020-09-22T03:41:14.612Z","1.1.0-rc.105":"2020-09-22T04:08:42.523Z","1.0.9":"2020-09-22T04:10:44.734Z","1.0.10":"2020-09-22T07:17:20.942Z","1.0.11":"2020-09-24T07:41:45.030Z","1.1.0-rc.107":"2020-09-24T07:41:54.798Z","1.0.14":"2020-09-27T05:35:44.308Z","1.1.0-rc.110":"2020-09-27T05:40:15.615Z","1.0.15":"2020-09-28T18:34:05.569Z","1.1.0-rc.111":"2020-09-28T19:03:07.949Z","1.0.16":"2020-09-29T02:59:35.607Z","1.1.0-rc.112":"2020-09-29T03:11:00.879Z","1.0.17":"2020-09-29T20:45:56.947Z","1.1.0-rc.113":"2020-10-02T06:26:01.588Z","1.0.18":"2020-10-02T06:29:19.284Z","1.0.19":"2020-10-03T01:53:35.794Z","1.1.0-rc.116":"2020-10-03T01:53:42.566Z","1.1.0-rc.117":"2020-10-03T17:15:51.481Z","1.0.20":"2020-10-03T17:16:07.760Z","1.0.21":"2020-10-03T21:19:56.755Z","1.0.22":"2020-10-03T22:03:19.873Z","1.1.0-rc.118":"2020-10-03T22:04:09.261Z","1.0.23":"2020-10-04T03:56:23.973Z","1.0.22-webpack.2":"2020-10-04T05:22:05.884Z","1.1.0-rc.121":"2020-10-04T05:22:22.566Z","1.0.22-webpack.3":"2020-10-05T03:55:43.209Z","1.0.22-webpack.4":"2020-10-06T04:22:12.722Z","1.0.25":"2020-10-06T04:22:29.847Z","1.1.0-rc.122":"2020-10-06T11:06:06.586Z","1.1.0-webpack.0":"2020-10-06T18:50:52.036Z","1.1.0-webpack.1":"2020-10-06T19:25:06.966Z","1.1.0-rc.123":"2020-10-07T19:13:08.980Z","1.0.27":"2020-10-07T19:13:50.855Z","1.1.0-rc.124":"2020-10-08T20:43:30.411Z","1.0.28":"2020-10-08T20:58:14.039Z","1.1.0-rc.125":"2020-10-10T03:50:36.067Z","1.0.29":"2020-10-10T03:50:46.641Z","1.1.0-webpack.2":"2020-10-10T21:28:41.851Z","1.1.0-rc.126":"2020-10-11T08:40:59.194Z","1.1.0-rc.127":"2020-10-11T20:08:30.362Z","1.1.0-webpack.3":"2020-10-11T20:26:45.102Z","1.1.0-rc.128":"2020-10-11T20:46:21.401Z","1.1.0-webpack.4":"2020-10-11T20:47:38.051Z","1.1.0-rc.129":"2020-10-13T04:17:41.965Z","1.1.0-webpack.5":"2020-10-13T16:30:03.030Z","1.1.0-webpack.6":"2020-10-13T18:23:09.692Z","1.0.30":"2020-10-14T18:38:56.359Z","1.1.0-rc.130":"2020-10-14T18:41:28.223Z","1.1.0-rc.131":"2020-10-16T05:45:19.641Z","1.0.31":"2020-10-16T09:14:40.399Z","1.1.0-webpack.7":"2020-10-16T09:14:50.230Z","1.1.0-rc.132":"2020-10-17T12:38:37.574Z","1.1.0-webpack.8":"2020-10-17T14:24:54.866Z","1.0.32":"2020-10-17T14:25:28.511Z","1.0.33":"2020-10-23T02:41:33.087Z","1.1.0-rc.133":"2020-10-23T02:48:43.473Z","1.1.0-webpack.9":"2020-10-23T02:57:04.659Z","1.1.0-rc.134":"2020-10-23T20:10:44.699Z","1.0.34":"2020-10-24T03:29:25.044Z","1.1.0-webpack.10":"2020-10-24T04:50:10.072Z","1.0.35":"2020-10-28T03:02:44.762Z","1.1.0-rc.135":"2020-10-28T03:23:26.682Z","1.1.0-rc.137":"2020-10-29T16:36:28.125Z","1.0.36":"2020-10-29T16:52:09.320Z","1.1.0-webpack.11":"2020-10-29T22:34:08.730Z","1.1.0-webpack.12":"2020-10-30T00:16:27.098Z","1.1.0-rc.138":"2020-10-31T02:20:13.318Z","1.1.0-webpack.13":"2020-10-31T02:20:29.383Z","1.0.37":"2020-10-31T02:30:48.465Z","1.1.0-rc.139":"2020-11-01T05:39:26.714Z","1.1.0-webpack.14":"2020-11-01T05:54:52.839Z","1.0.39":"2020-11-01T05:54:57.442Z","1.0.40":"2020-11-03T04:45:52.735Z","1.1.0-rc.140":"2020-11-03T04:46:24.263Z","1.1.0-webpack.15":"2020-11-03T04:55:14.902Z","1.1.0-rc.141":"2020-11-03T14:22:43.979Z","1.1.0-rc.142":"2020-11-03T23:13:00.526Z","1.1.0-rc.143":"2020-11-04T09:35:42.426Z","1.0.41":"2020-11-05T10:12:35.371Z","1.1.0-rc.144":"2020-11-05T10:13:35.362Z","1.0.42":"2020-11-06T04:30:26.632Z","1.1.0-rc.145":"2020-11-06T04:31:01.412Z","1.1.0-rc.146":"2020-11-08T05:17:35.643Z","1.0.43":"2020-11-08T05:21:53.406Z","1.1.0-rc.147":"2020-11-08T06:22:54.149Z","1.1.0-rc.148":"2020-11-08T23:15:22.571Z","1.1.0-rc.149":"2020-11-08T23:36:51.413Z","1.1.0-rc.150":"2020-11-09T19:54:39.057Z","1.1.0-rc.151":"2020-11-10T03:11:58.790Z","1.0.44":"2020-11-10T03:12:33.197Z","1.1.0-rc.152":"2020-11-11T05:48:20.407Z","1.0.45":"2020-11-12T11:31:21.022Z","1.1.0-rc.153":"2020-11-15T03:22:45.671Z","1.0.46":"2020-11-15T04:32:13.502Z","1.1.0-rc.154":"2020-11-15T22:42:37.316Z","1.1.0-rc.155":"2020-11-15T23:46:26.939Z","1.1.0-rc.156":"2020-11-16T01:10:58.827Z","1.1.0-rc.157":"2020-11-16T02:27:42.604Z","1.1.0-rc.159":"2020-11-16T12:25:59.508Z","1.1.0-rc.160":"2020-11-16T13:55:32.827Z","1.1.0-rc.161":"2020-11-16T14:09:08.626Z","1.1.0-rc.163":"2020-11-16T19:58:44.678Z","1.1.0-rc.164":"2020-11-17T05:26:58.380Z","1.0.47":"2020-11-18T20:56:38.727Z","1.1.0-rc.165":"2020-11-18T21:02:56.896Z","1.1.0-rc.166":"2020-11-19T19:48:46.004Z","1.1.0-rc.167":"2020-11-19T21:16:34.550Z","1.1.0-rc.168":"2020-11-20T05:58:51.085Z","1.0.48":"2020-11-20T06:00:20.494Z","1.1.0-rc.169":"2020-11-20T07:51:50.352Z","1.0.49":"2020-11-20T07:52:12.049Z","1.1.0-rc.170":"2020-11-21T07:08:02.900Z","1.0.50":"2020-11-21T09:16:41.868Z","1.1.0-rc.171":"2020-11-21T18:26:33.626Z","1.1.0-rc.172":"2020-11-21T20:04:45.838Z","1.1.0-rc.173":"2020-11-21T20:22:50.528Z","1.1.0-rc.174":"2020-11-22T15:52:48.467Z","1.1.0-rc.176":"2020-11-22T16:32:26.322Z","1.1.0-rc.177":"2020-11-22T18:57:48.916Z","1.1.0-rc.178":"2020-11-22T19:35:17.009Z","1.1.0-rc.179":"2020-11-22T20:04:45.494Z","1.1.0-rc.180":"2020-11-22T20:34:47.292Z","1.1.0-rc.181":"2020-11-23T07:37:22.328Z","1.1.0-rc.182":"2020-11-23T16:33:29.533Z","1.1.0-rc.183":"2020-11-23T19:52:21.667Z","1.1.0-rc.186":"2020-11-24T10:58:10.338Z","1.1.0-rc.187":"2020-11-24T12:49:12.965Z","1.1.0-rc.188":"2020-11-25T03:25:27.157Z","1.1.0-rc.189":"2020-11-30T05:13:06.481Z","1.0.52":"2020-11-30T05:13:37.595Z","1.0.51":"2020-11-30T05:16:21.282Z","1.0.53":"2020-11-30T07:12:25.374Z","1.1.0-rc.191":"2020-11-30T07:35:17.512Z","1.1.0-rc.192":"2020-12-01T02:56:36.335Z","1.1.0-rc.193":"2020-12-01T21:49:59.766Z","1.0.54":"2020-12-01T22:22:34.374Z","1.1.0-rc.194":"2020-12-01T22:31:19.510Z","1.1.0-rc.195":"2020-12-01T22:59:47.485Z","1.1.0-rc.196":"2020-12-01T23:50:59.298Z","1.0.55":"2020-12-02T06:33:53.746Z","1.1.0-rc.197":"2020-12-03T05:01:56.381Z","1.0.58":"2020-12-03T07:32:48.896Z","1.1.0-rc.198":"2020-12-06T12:46:23.725Z","1.1.0-rc.199":"2020-12-07T07:27:41.108Z","1.1.0-rc.201":"2020-12-08T22:52:15.847Z","1.1.0-rc.202":"2020-12-08T23:55:30.746Z","1.1.0-rc.203":"2020-12-09T08:03:55.504Z","1.1.0-rc.206":"2020-12-09T09:52:40.144Z","1.1.0-rc.207":"2020-12-09T10:56:48.807Z","1.1.0-rc.209":"2020-12-09T15:35:09.893Z","1.1.0-rc.210":"2020-12-09T17:35:41.856Z","1.1.0-rc.213":"2020-12-10T10:53:58.299Z","1.1.0-rc.214":"2020-12-11T13:23:31.425Z","1.1.0-rc.215":"2020-12-13T00:12:48.940Z","1.1.0-rc.216":"2020-12-13T00:39:20.556Z","1.1.0-rc.217":"2020-12-13T07:13:28.137Z","1.1.0-rc.219":"2020-12-14T05:14:50.251Z","1.1.0-rc.221":"2020-12-15T07:51:44.468Z","1.1.0-rc.222":"2020-12-15T13:53:02.690Z","1.1.0-rc.224":"2020-12-15T20:38:48.101Z","1.1.0-rc.225":"2020-12-15T23:16:11.328Z","1.1.0-rc.226":"2020-12-16T07:45:06.153Z","1.1.0-rc.227":"2020-12-16T12:03:55.746Z","1.1.0-rc.229":"2020-12-16T14:33:21.675Z","1.1.0-rc.230":"2020-12-16T20:32:37.254Z","1.1.0-rc.231":"2020-12-16T21:46:00.701Z","1.1.0-rc.232":"2020-12-16T22:12:51.529Z","1.1.0-rc.233":"2020-12-16T23:10:27.826Z","1.1.0-rc.234":"2020-12-17T00:03:06.294Z","1.1.0-rc.235":"2020-12-17T00:14:04.780Z","1.1.0-rc.236":"2020-12-17T00:36:36.912Z","1.1.0-rc.237":"2020-12-18T04:29:51.841Z","1.0.64":"2020-12-18T05:18:53.423Z","1.1.0-rc.238":"2020-12-18T05:54:51.042Z","1.0.65":"2020-12-18T15:08:55.739Z","1.0.67":"2020-12-19T13:37:25.556Z","1.0.68":"2020-12-20T03:06:19.640Z","1.0.69":"2020-12-20T04:10:55.030Z","1.1.0-rc.239":"2020-12-20T04:12:12.346Z","1.0.70":"2020-12-20T05:16:19.770Z","1.0.71":"2020-12-20T07:26:33.175Z","1.0.72":"2020-12-20T20:27:37.697Z","1.0.73":"2020-12-21T21:52:16.318Z","1.0.74":"2020-12-21T22:46:40.634Z","1.1.0-rc.240":"2020-12-22T05:41:01.032Z","1.1.0-rc.241":"2020-12-22T06:21:04.069Z","1.1.0-rc.242":"2020-12-27T13:44:08.785Z","1.0.75":"2020-12-28T21:21:12.948Z","1.1.0-rc.243":"2020-12-28T21:21:53.272Z","1.0.76":"2020-12-29T18:04:39.173Z","1.1.0-rc.246":"2021-01-01T13:48:42.413Z","1.0.78":"2021-01-03T00:51:18.618Z","1.0.79":"2021-01-03T01:34:19.642Z","1.1.0-rc.248":"2021-01-03T01:59:18.884Z","1.0.80":"2021-01-03T02:28:40.289Z","1.1.0-rc.251":"2021-01-03T06:42:44.253Z","1.1.0-rc.252":"2021-01-03T06:58:32.680Z","1.1.0-rc.253":"2021-01-03T07:57:09.064Z","1.0.81":"2021-01-03T10:20:24.034Z","1.1.0-rc.254":"2021-01-03T10:22:27.750Z","1.1.0-rc.255":"2021-01-05T21:33:05.537Z","1.0.82":"2021-01-05T21:35:15.522Z","1.1.0-rc.256":"2021-01-06T06:42:15.331Z","1.1.0-rc.257":"2021-01-07T04:05:49.508Z","1.0.83":"2021-01-07T04:08:12.868Z","1.1.0-rc.258":"2021-01-07T04:59:43.763Z","1.0.84":"2021-01-07T20:15:59.640Z","1.1.0-rc.260":"2021-01-09T22:00:13.302Z","1.1.0-rc.261":"2021-01-10T09:08:27.769Z","1.0.86":"2021-01-10T09:10:11.231Z","1.0.87":"2021-01-10T12:01:09.892Z","1.1.0-rc.262":"2021-01-10T12:02:02.732Z","1.1.0-rc.263":"2021-01-10T22:12:17.692Z","1.0.88":"2021-01-10T22:24:40.972Z","1.1.0-rc.264":"2021-01-11T22:33:16.180Z","1.1.0-rc.265":"2021-01-11T23:28:01.582Z","1.0.89":"2021-01-14T04:04:49.461Z","1.1.0-rc.266":"2021-01-14T04:04:58.676Z","1.1.0-rc.267":"2021-01-16T15:54:06.463Z","1.0.90":"2021-01-17T04:19:21.033Z","1.1.0-rc.268":"2021-01-21T05:35:21.644Z","1.0.91":"2021-01-21T05:37:45.119Z","1.1.0-rc.269":"2021-01-25T04:00:28.515Z","1.0.92":"2021-01-25T04:59:30.501Z","1.1.0-rc.270":"2021-01-26T21:26:31.580Z","1.1.0-rc.271":"2021-01-29T21:34:17.554Z","1.1.0-rc.272":"2021-01-29T23:46:28.080Z","1.1.0-rc.273":"2021-01-30T00:46:45.463Z","1.1.0-rc.274":"2021-01-30T18:15:56.327Z","1.1.0-rc.275":"2021-01-31T05:16:44.424Z","1.1.0-rc.277":"2021-02-01T04:29:34.149Z","1.1.0-rc.278":"2021-02-01T05:03:20.683Z","1.1.0-rc.279":"2021-02-01T06:24:15.552Z","1.1.0-rc.280":"2021-02-01T13:07:44.740Z","1.1.0-rc.282":"2021-02-02T03:58:03.290Z","1.0.93":"2021-02-03T05:34:04.608Z","1.1.0-rc.283":"2021-02-03T06:53:09.914Z","1.0.94":"2021-02-06T05:19:50.855Z","1.0.95":"2021-02-06T19:59:19.266Z","1.1.0-rc.284":"2021-02-06T20:00:50.475Z","1.1.0-rc.285":"2021-02-07T22:51:09.098Z","1.1.0-rc.286":"2021-02-07T23:40:11.394Z","1.1.0-rc.287":"2021-02-10T06:06:40.167Z","1.1.0-rc.288":"2021-02-10T08:07:02.538Z","1.1.0-rc.289":"2021-02-11T05:15:37.530Z","1.0.96":"2021-02-12T06:35:04.387Z","1.1.0-rc.290":"2021-02-12T06:49:27.678Z","1.1.0-rc.291":"2021-02-13T20:31:58.116Z","1.0.97":"2021-02-14T05:19:32.583Z","1.1.0-rc.292":"2021-02-14T06:31:55.657Z","1.1.0-rc.293":"2021-02-18T19:05:59.736Z","1.1.0-rc.294":"2021-02-19T05:49:47.405Z","1.1.0-rc.295":"2021-02-19T20:11:21.332Z","1.1.0-rc.296":"2021-02-20T03:21:42.453Z","1.0.98":"2021-02-20T03:29:13.499Z","1.0.99":"2021-02-20T10:27:18.115Z","1.0.100":"2021-02-20T11:08:54.549Z","1.0.101":"2021-02-20T11:45:45.229Z","1.1.0-rc.297":"2021-02-20T13:04:33.057Z","1.1.0-rc.298":"2021-02-20T14:05:35.797Z","1.1.0-rc.299":"2021-02-20T14:39:09.426Z","1.0.102":"2021-02-21T05:22:52.321Z","1.1.0-rc.301":"2021-02-23T13:41:16.600Z","1.0.103":"2021-02-24T03:30:33.501Z","1.1.0-rc.302":"2021-02-24T04:43:08.268Z","1.0.104":"2021-02-24T08:11:59.868Z","1.1.0-rc.303":"2021-02-24T11:26:49.438Z","1.1.0-rc.304":"2021-02-25T07:06:10.849Z","1.0.105":"2021-02-25T08:18:18.346Z","1.1.0-rc.305":"2021-03-01T06:13:56.184Z","1.0.106":"2021-03-01T06:51:32.086Z","1.1.0-rc.306":"2021-03-03T05:32:37.278Z","1.0.107":"2021-03-03T06:05:52.331Z","1.1.0-rc.307":"2021-03-03T10:16:02.299Z","1.0.108":"2021-03-05T23:22:11.446Z","1.1.0-rc.309":"2021-03-06T00:41:04.521Z","1.1.0-rc.310":"2021-03-07T13:24:57.779Z","1.0.109":"2021-03-07T13:57:32.156Z","1.1.0-rc.311":"2021-03-07T20:55:03.178Z","1.0.110":"2021-03-07T22:17:45.052Z","1.1.0-rc.312":"2021-03-07T22:18:26.131Z","1.1.0":"2021-03-07T22:35:40.917Z","1.2.0-rc.50":"2021-03-07T22:57:19.180Z","1.0.111":"2021-03-07T23:03:46.645Z","1.1.1":"2021-03-07T23:04:12.595Z","1.2.0-rc.51":"2021-03-07T23:12:17.249Z","1.1.2":"2021-03-09T04:28:32.241Z","1.2.0-rc.52":"2021-03-09T04:34:05.752Z","1.2.0-rc.53":"2021-03-11T12:58:47.200Z","1.1.3":"2021-03-11T13:20:41.116Z","1.0.113":"2021-03-11T13:23:00.200Z","1.2.0-rc.54":"2021-03-12T08:40:16.884Z","1.1.4":"2021-03-12T11:49:16.891Z","1.0.114":"2021-03-12T13:43:39.536Z","1.1.5":"2021-03-13T15:30:02.198Z","1.2.0-rc.55":"2021-03-13T15:30:31.347Z","1.0.115":"2021-03-13T15:47:07.286Z","1.1.6":"2021-03-13T23:55:06.863Z","1.0.116":"2021-03-13T23:57:56.393Z","1.2.0-rc.56":"2021-03-13T23:58:13.343Z","1.0.117":"2021-03-17T04:50:30.762Z","1.1.7":"2021-03-17T04:50:50.961Z","1.2.0-rc.57":"2021-03-17T04:52:48.858Z","1.1.8":"2021-03-18T15:43:09.750Z","1.0.118":"2021-03-18T15:44:13.855Z","1.2.0-rc.58":"2021-03-18T16:14:11.842Z","1.2.0-rc.59":"2021-03-19T00:31:13.750Z","1.2.0-rc.60":"2021-03-20T05:23:29.277Z","1.0.119":"2021-03-24T05:30:39.687Z","1.2.0-rc.61":"2021-03-24T05:30:51.746Z","1.1.9":"2021-03-24T05:31:18.447Z","1.2.0-rc.62":"2021-03-29T20:00:12.466Z","1.0.120":"2021-03-31T05:05:26.575Z","1.2.0-rc.63":"2021-03-31T05:05:43.550Z","1.1.10":"2021-04-01T03:32:34.479Z","1.2.0-rc.64":"2021-04-02T20:15:03.870Z","1.2.0-rc.65":"2021-04-02T22:38:55.491Z","1.2.0-rc.66":"2021-04-04T05:28:07.374Z","1.2.0-rc.67":"2021-04-07T15:05:13.061Z","1.0.121":"2021-04-07T15:05:23.821Z","1.1.11":"2021-04-07T15:06:26.045Z","1.2.0-rc.68":"2021-04-09T09:50:06.984Z","1.1.12":"2021-04-15T04:17:51.218Z","1.0.122":"2021-04-15T04:24:02.385Z","1.2.0-rc.69":"2021-04-15T04:24:20.937Z","1.2.0-rc.70":"2021-04-17T00:04:19.764Z","1.2.0-rc.71":"2021-04-18T04:00:31.645Z","1.0.123":"2021-04-18T04:19:58.192Z","1.1.13":"2021-04-18T04:23:23.293Z","1.1.14":"2021-04-19T20:28:37.115Z","1.2.0-rc.72":"2021-04-19T22:11:21.595Z","1.1.15":"2021-04-19T22:14:10.520Z","1.0.124":"2021-04-19T22:14:29.039Z","1.0.125":"2021-04-23T04:55:30.257Z","1.1.16":"2021-04-23T04:56:12.435Z","1.2.0-rc.74":"2021-04-23T12:18:30.211Z","1.2.0-rc.73":"2021-04-23T19:52:52.284Z","1.2.0-rc.75":"2021-04-26T02:15:28.445Z","1.0.126":"2021-04-28T05:00:58.486Z","1.1.17":"2021-04-28T05:01:56.178Z","1.2.0-rc.77":"2021-04-28T05:02:07.460Z","1.2.0-rc.76":"2021-04-28T05:04:42.428Z","1.2.0-rc.78":"2021-05-03T20:53:13.327Z","1.0.127":"2021-05-09T11:43:15.411Z","1.2.0-rc.79":"2021-05-09T11:51:53.222Z","1.1.18":"2021-05-10T03:01:40.067Z","1.1.19":"2021-05-12T05:05:48.745Z","1.2.0-rc.80":"2021-05-12T05:06:05.434Z","1.0.128":"2021-05-12T05:15:03.031Z","1.0.129":"2021-05-28T19:10:56.230Z","1.1.20":"2021-05-28T19:11:23.059Z","1.2.0-rc.81":"2021-05-28T19:16:56.822Z","1.2.0-rc.82":"2021-05-29T00:57:44.276Z","1.1.21":"2021-05-29T00:57:52.572Z","1.0.130":"2021-05-29T00:59:50.963Z","1.2.0-rc.83":"2021-05-30T20:50:29.684Z","1.2.0-rc.85":"2021-06-03T03:34:43.138Z","1.1.22":"2021-06-03T03:35:04.277Z","1.0.131":"2021-06-08T14:20:13.311Z","1.0.132":"2021-06-09T06:05:59.619Z","1.1.23":"2021-06-09T06:06:32.116Z","1.2.0-rc.86":"2021-06-09T07:42:31.566Z","1.2.0-rc.87":"2021-06-16T18:39:04.836Z","1.1.24":"2021-06-16T18:39:33.791Z","1.0.133":"2021-06-16T18:48:36.999Z","1.2.0-rc.88":"2021-07-13T02:48:56.494Z","1.1.25":"2021-07-13T02:49:09.089Z","1.0.134":"2021-07-13T03:02:33.620Z","1.2.0-rc.89":"2021-07-14T04:28:21.758Z","1.1.26":"2021-07-14T04:28:32.017Z","1.0.135":"2021-07-14T04:29:08.607Z","1.2.0-rc.90":"2021-07-17T07:18:44.691Z","1.2.0-rc.91":"2021-07-17T21:24:00.495Z","1.2.0-rc.92":"2021-07-18T03:07:38.732Z","1.2.0-rc.93":"2021-07-20T20:46:35.803Z","1.1.27":"2021-07-22T04:27:36.613Z","1.0.136":"2021-07-22T05:15:31.731Z","1.2.0-rc.94":"2021-07-25T23:19:20.865Z","1.2.0-rc.95":"2021-07-25T23:32:02.421Z","1.2.0-rc.96":"2021-07-26T00:16:12.686Z","1.0.137":"2021-07-28T13:06:04.260Z","1.1.28":"2021-07-28T13:06:18.405Z","1.2.0-rc.97":"2021-07-28T20:16:59.773Z","1.1.29":"2021-08-05T06:14:05.888Z","1.0.138":"2021-08-05T06:15:34.715Z","1.2.0-rc.98":"2021-08-05T06:17:01.903Z","1.2.0-rc.99":"2021-08-06T00:54:36.162Z","1.2.0-rc.101":"2021-08-06T04:01:04.158Z","1.2.0-rc.103":"2021-08-09T08:24:33.514Z","1.2.0-rc.104":"2021-08-11T02:39:30.526Z","1.2.0-rc.106":"2021-08-11T03:51:07.829Z","1.2.0-rc.107":"2021-08-12T04:27:04.700Z","1.2.0-rc.108":"2021-08-13T02:35:29.800Z","1.0.139":"2021-08-15T19:44:44.611Z","1.1.30":"2021-08-15T19:44:55.957Z","1.2.0-rc.109":"2021-08-21T20:19:03.149Z","1.1.31":"2021-08-21T20:19:21.362Z","1.0.140":"2021-08-21T20:19:41.942Z","1.2.0-rc.110":"2021-08-22T05:42:41.844Z","1.2.0-rc.111":"2021-08-22T12:08:06.510Z","1.2.0-rc.114":"2021-08-22T20:52:36.012Z","1.2.0-rc.115":"2021-08-25T18:40:36.249Z","1.1.32":"2021-08-25T18:41:24.248Z","1.0.141":"2021-08-25T18:44:34.010Z","1.2.0-rc.116":"2021-08-28T05:03:10.457Z","1.2.0-rc.117":"2021-08-30T22:34:03.341Z","1.2.0-rc.118":"2021-08-30T23:01:12.664Z","1.0.142":"2021-09-01T23:24:29.166Z","1.1.33":"2021-09-01T23:24:42.356Z","1.2.0-rc.119":"2021-09-01T23:34:13.835Z","1.2.0-rc.120":"2021-09-02T03:25:29.723Z","1.2.0-rc.121":"2021-09-04T03:21:07.920Z","1.2.0-rc.122":"2021-09-06T07:35:03.508Z","1.2.0-rc.123":"2021-09-08T19:06:08.202Z","1.1.34":"2021-09-08T19:06:30.994Z","1.0.143":"2021-09-08T19:19:22.063Z","1.1.35":"2021-09-15T14:36:30.125Z","1.0.144":"2021-09-15T14:37:02.167Z","1.2.0-rc.124":"2021-09-16T22:50:55.122Z","1.2.0":"2021-09-19T02:57:30.701Z","2.0.0-rc.0":"2021-09-19T03:05:50.225Z","1.0.145":"2021-09-22T08:51:04.380Z","1.2.1":"2021-09-22T08:51:16.975Z","1.1.36":"2021-09-22T08:51:31.681Z","2.0.0-rc.1":"2021-09-22T10:25:58.666Z","2.0.0-rc.2":"2021-09-30T00:04:31.377Z","1.2.2":"2021-09-30T00:05:05.409Z","1.1.37":"2021-09-30T00:05:30.855Z","1.0.146":"2021-09-30T00:06:38.350Z","1.1.38":"2021-10-12T17:09:29.477Z","1.0.147":"2021-10-12T17:12:37.900Z","2.0.0-rc.3":"2021-10-12T18:22:50.839Z","1.2.3":"2021-10-12T18:23:02.453Z","1.1.39":"2021-10-12T18:23:09.611Z","1.0.148":"2021-10-12T19:25:36.129Z","1.0.149":"2021-10-14T06:38:47.116Z","2.0.0-rc.4":"2021-10-14T06:39:04.517Z","1.1.40":"2021-10-14T06:39:11.776Z","1.2.4":"2021-10-14T06:39:41.209Z","2.0.0-rc.5":"2021-10-17T18:52:45.389Z","1.0.150":"2021-10-24T06:28:35.347Z","1.2.5":"2021-10-24T06:29:23.331Z","2.0.0-rc.6":"2021-10-24T06:32:59.224Z","1.1.41":"2021-10-24T06:42:35.410Z","2.0.0-rc.7":"2021-10-25T05:35:27.743Z","2.0.0-rc.8":"2021-10-27T11:09:08.685Z","1.1.42":"2021-10-27T11:09:38.411Z","1.2.6":"2021-10-27T11:54:10.056Z","1.0.151":"2021-10-27T11:55:23.397Z","2.0.0-rc.9":"2021-10-28T05:21:38.812Z","2.0.0-rc.10":"2021-10-29T05:05:28.978Z","2.0.0-rc.11":"2021-10-29T09:24:07.266Z","2.0.0-rc.12":"2021-10-30T02:33:12.491Z","2.0.0-rc.16":"2021-11-03T04:37:27.666Z","1.0.152":"2021-11-03T04:37:34.801Z","1.2.7":"2021-11-03T04:39:52.749Z","1.1.43":"2021-11-03T06:38:12.474Z","1.2.8":"2021-11-03T15:47:11.946Z","1.0.153":"2021-11-03T15:47:22.969Z","2.0.0-rc.17":"2021-11-03T15:47:41.094Z","1.1.44":"2021-11-03T15:47:58.157Z","1.1.45":"2021-11-05T06:00:49.496Z","1.1.46":"2021-11-07T16:50:37.827Z","2.0.0-rc.18":"2021-11-07T16:52:02.387Z","2.0.0-rc.20":"2021-11-08T05:01:57.774Z","2.0.0-rc.21":"2021-11-09T22:06:05.944Z","1.2.9":"2021-11-09T23:46:43.905Z","2.0.0-rc.22":"2021-11-10T05:10:49.941Z","1.0.154":"2021-11-10T05:20:49.402Z","1.1.47":"2021-11-10T05:33:31.039Z","1.2.10":"2021-11-10T06:52:42.308Z","2.0.0-rc.24":"2021-11-11T19:53:26.086Z","1.2.12":"2021-11-11T20:04:41.425Z","1.2.13":"2021-11-17T03:26:52.240Z","1.1.48":"2021-11-17T06:58:44.477Z","2.0.0-rc.25":"2021-11-17T06:59:39.970Z","1.0.155":"2021-11-17T07:58:24.056Z","1.2.14":"2021-11-17T21:08:27.397Z","1.2.15":"2021-11-24T17:24:48.193Z","1.1.49":"2021-11-24T17:25:25.252Z","2.0.0-rc.26":"2021-11-24T19:11:05.080Z","1.0.156":"2021-11-24T19:38:23.561Z","1.0.157":"2021-12-04T13:58:34.979Z","1.1.50":"2021-12-04T13:59:08.219Z","1.2.16":"2021-12-04T14:00:08.129Z","2.0.0-rc.27":"2021-12-04T14:12:16.791Z","1.2.17":"2021-12-05T06:30:09.718Z","1.2.18":"2021-12-11T10:34:21.112Z","1.0.158":"2021-12-11T11:05:16.961Z","2.0.0-rc.28":"2021-12-11T13:09:08.659Z","1.0.159":"2022-01-08T05:24:08.651Z","1.1.52":"2022-01-08T05:25:56.916Z","1.2.20":"2022-01-08T05:26:36.873Z","2.0.0-rc.30":"2022-01-09T04:56:19.432Z","2.0.0-rc.31":"2022-01-09T12:45:22.081Z","1.0.160":"2022-01-12T22:38:27.143Z","1.1.53":"2022-01-12T22:38:55.434Z","2.0.0-rc.32":"2022-01-12T22:40:09.809Z","1.2.21":"2022-01-13T08:32:45.664Z","1.1.54":"2022-01-19T06:59:49.233Z","2.0.0-rc.33":"2022-01-19T07:00:34.158Z","1.2.22":"2022-01-19T07:20:55.605Z","1.0.161":"2022-01-21T04:00:59.711Z","1.2.23":"2022-01-21T04:05:07.251Z","1.0.162":"2022-01-26T19:57:22.554Z","1.1.55":"2022-01-26T19:58:03.987Z","1.2.25":"2022-01-26T19:59:30.497Z","2.0.0-rc.34":"2022-01-26T20:02:27.515Z","2.0.0-rc.35":"2022-01-29T23:57:48.360Z","2.0.0-rc.36":"2022-01-30T22:44:00.007Z","1.3.0":"2022-02-02T02:20:27.849Z","2.0.0-rc.37":"2022-02-02T04:45:35.882Z","1.1.56":"2022-02-02T04:46:02.227Z","1.2.26":"2022-02-02T04:46:38.836Z","1.3.1":"2022-02-02T04:56:34.944Z","1.0.163":"2022-02-02T05:02:40.498Z","1.3.2":"2022-02-03T04:50:35.233Z","1.0.164":"2022-02-12T05:54:32.098Z","1.1.57":"2022-02-12T05:54:57.878Z","2.0.0-rc.38":"2022-02-12T05:56:01.072Z","1.2.27":"2022-02-12T05:56:31.930Z","1.3.3":"2022-02-12T06:28:49.523Z","1.0.165":"2022-02-16T05:11:52.247Z","2.0.0-rc.39":"2022-02-16T05:12:52.627Z","1.2.28":"2022-02-16T05:13:08.214Z","1.1.58":"2022-02-16T05:17:34.157Z","1.3.4":"2022-02-16T05:20:45.223Z","1.0.166":"2022-02-24T00:08:17.010Z","1.1.59":"2022-02-24T00:10:01.846Z","1.3.5":"2022-02-24T00:10:38.447Z","1.2.29":"2022-02-24T00:11:03.860Z","2.0.0-rc.40":"2022-02-24T00:12:39.762Z","1.3.6":"2022-03-02T06:56:44.869Z","1.1.60":"2022-03-02T07:09:45.804Z","2.0.0-rc.41":"2022-03-02T07:11:35.930Z","1.1.61":"2022-03-11T02:02:42.581Z","1.3.7":"2022-03-11T02:13:31.182Z","2.0.0-rc.42":"2022-03-11T03:01:24.540Z","1.0.167":"2022-03-11T03:59:56.588Z","1.2.30":"2022-03-11T04:00:43.006Z","1.0.168":"2022-03-29T03:23:25.235Z","1.1.62":"2022-03-29T03:23:41.788Z","1.3.8":"2022-03-29T03:24:07.916Z","2.0.0-rc.43":"2022-03-29T03:24:24.236Z","1.2.31":"2022-03-29T03:24:43.490Z","1.0.169":"2022-03-30T17:50:51.205Z","1.1.63":"2022-03-30T17:51:43.447Z","2.0.0-rc.44":"2022-03-30T17:52:06.159Z","1.3.9":"2022-03-30T17:52:14.675Z","1.2.32":"2022-03-30T17:53:16.614Z","1.0.170":"2022-04-07T15:04:55.714Z","2.0.0-rc.45":"2022-04-07T15:05:36.805Z","1.3.10":"2022-04-07T15:05:58.235Z","1.1.64":"2022-04-07T16:26:44.260Z","1.2.33":"2022-04-07T16:28:34.191Z","1.0.171":"2022-04-15T18:10:47.451Z","1.1.65":"2022-04-15T18:11:42.139Z","2.0.0-rc.46":"2022-04-15T18:12:10.600Z","1.3.11":"2022-04-15T18:12:24.090Z","1.2.34":"2022-04-15T18:24:09.581Z","1.0.172":"2022-04-23T05:40:51.150Z","2.0.0-rc.47":"2022-04-23T05:41:03.671Z","1.1.66":"2022-04-23T05:41:13.829Z","1.3.12":"2022-04-23T05:41:52.480Z","1.2.35":"2022-04-24T14:42:50.975Z","1.0.173":"2022-04-28T01:06:22.023Z","1.1.67":"2022-04-28T01:06:36.254Z","2.0.0-rc.48":"2022-04-28T01:07:09.679Z","1.3.13":"2022-04-28T01:07:41.412Z","1.2.36":"2022-04-28T01:15:52.728Z","1.0.174":"2022-05-05T03:09:37.956Z","2.0.0-rc.49":"2022-05-05T03:10:25.664Z","1.3.14":"2022-05-05T03:10:57.528Z","1.2.37":"2022-05-05T03:12:46.486Z","1.1.68":"2022-05-05T08:21:15.891Z","1.0.175":"2022-05-12T01:51:51.758Z","1.1.69":"2022-05-12T01:52:22.048Z","2.0.0-rc.50":"2022-05-12T01:52:46.123Z","1.3.15":"2022-05-12T01:53:04.113Z","1.2.38":"2022-05-12T01:53:45.342Z","1.1.70":"2022-05-18T08:27:47.866Z","1.2.39":"2022-05-18T08:29:33.135Z","1.0.176":"2022-05-18T08:44:15.552Z","2.0.0-rc.51":"2022-05-18T08:45:20.794Z","1.3.16":"2022-05-18T08:45:30.164Z","1.0.177":"2022-05-26T22:49:47.094Z","1.1.71":"2022-05-26T22:49:55.795Z","1.3.17":"2022-05-26T22:50:49.418Z","1.2.40":"2022-05-26T22:51:21.526Z","2.0.0-rc.52":"2022-05-26T23:37:41.966Z","1.0.178":"2022-06-01T23:08:25.270Z","1.1.72":"2022-06-01T23:08:48.869Z","2.0.0-rc.53":"2022-06-01T23:09:19.382Z","1.3.18":"2022-06-01T23:09:43.926Z","1.2.41":"2022-06-01T23:10:11.906Z","2.0.0-rc.54":"2022-06-08T14:36:36.792Z","1.0.179":"2022-06-08T22:33:41.573Z","1.3.19":"2022-06-08T22:34:41.328Z","1.1.73":"2022-06-13T20:38:53.995Z","1.2.42":"2022-06-13T20:40:12.538Z","1.0.180":"2022-06-15T17:06:56.439Z","2.0.0-rc.55":"2022-06-15T17:07:26.127Z","1.1.74":"2022-06-15T17:07:34.442Z","1.3.20":"2022-06-15T17:07:49.439Z","1.2.43":"2022-06-15T17:08:25.343Z","1.0.181":"2022-06-26T22:03:22.707Z","1.1.75":"2022-06-26T22:03:34.378Z","2.0.0-rc.56":"2022-06-26T22:04:24.438Z","1.2.44":"2022-06-26T22:04:34.762Z","1.3.21":"2022-06-26T22:09:10.964Z","1.0.182":"2022-06-29T06:23:14.474Z","1.1.76":"2022-06-29T06:24:05.967Z","1.3.22":"2022-06-29T06:24:22.881Z","1.2.45":"2022-06-29T07:09:41.188Z","2.0.0-rc.57":"2022-06-29T07:10:26.443Z","1.0.183":"2022-07-15T02:49:49.029Z","1.1.77":"2022-07-15T02:50:15.012Z","2.0.0-rc.58":"2022-07-15T02:51:22.781Z","1.3.23":"2022-07-15T03:02:33.018Z","1.2.46":"2022-07-15T03:03:01.355Z","2.0.0-rc.59":"2022-07-30T02:14:23.092Z","1.0.184":"2022-07-30T02:44:05.798Z","1.1.78":"2022-07-30T02:44:51.874Z","1.3.24":"2022-07-30T02:46:06.721Z","1.2.47":"2022-07-30T02:46:15.753Z","2.0.0-rc.60":"2022-07-30T02:49:03.086Z","2.0.0-rc.61":"2022-07-31T03:44:06.587Z","1.3.25":"2022-07-31T04:10:02.839Z","2.0.0-rc.62":"2022-07-31T04:10:14.272Z","1.0.185":"2022-07-31T13:34:49.434Z","1.1.79":"2022-07-31T13:35:25.761Z","2.0.0-rc.63":"2022-07-31T13:36:20.378Z","1.2.48":"2022-07-31T13:36:57.686Z","1.3.26":"2022-07-31T13:46:41.586Z","2.0.0-rc.64":"2022-08-01T01:56:36.386Z","1.1.81":"2022-08-08T04:40:35.380Z","2.0.0-rc.65":"2022-08-08T04:41:01.012Z","1.3.28":"2022-08-08T04:41:14.334Z","1.2.50":"2022-08-08T04:41:50.108Z","1.0.187":"2022-08-08T04:44:08.848Z","1.1.82":"2022-08-12T04:33:05.035Z","1.3.29":"2022-08-12T04:33:54.639Z","1.2.51":"2022-08-12T04:34:10.907Z","1.0.188":"2022-08-12T04:48:45.824Z","2.0.0-rc.66":"2022-08-12T04:50:48.514Z","1.0.189":"2022-08-17T21:14:38.378Z","1.1.83":"2022-08-17T21:15:31.907Z","2.0.0-rc.67":"2022-08-17T21:16:03.874Z","1.2.52":"2022-08-17T21:16:23.434Z","1.3.30":"2022-08-17T21:26:29.912Z","1.0.190":"2022-08-28T05:41:32.953Z","1.1.84":"2022-08-28T05:41:41.639Z","2.0.0-rc.68":"2022-08-28T05:42:41.010Z","1.2.53":"2022-08-28T05:42:54.900Z","1.3.31":"2022-08-28T05:54:48.767Z","2.0.0-rc.69":"2022-09-03T03:44:46.256Z","1.0.191":"2022-09-03T03:45:01.701Z","1.1.85":"2022-09-03T03:45:19.532Z","1.2.54":"2022-09-03T03:46:20.030Z","1.3.32":"2022-09-03T03:59:02.072Z","1.0.192":"2022-09-08T04:27:10.414Z","1.3.33":"2022-09-08T04:28:29.139Z","1.1.86":"2022-09-09T01:09:58.830Z","1.2.55":"2022-09-09T01:10:53.125Z","1.0.193":"2022-09-16T02:12:24.890Z","1.1.87":"2022-09-16T02:13:05.946Z","1.3.34":"2022-09-16T02:13:48.160Z","1.2.56":"2022-09-16T02:15:32.606Z","1.0.194":"2022-09-24T05:29:33.826Z","1.1.88":"2022-09-24T05:30:15.246Z","2.0.0-rc.73":"2022-09-24T05:30:44.898Z","1.2.57":"2022-09-24T05:31:01.469Z","1.3.35":"2022-09-24T05:31:56.704Z","1.0.195":"2022-10-05T04:17:31.455Z","1.1.89":"2022-10-05T04:18:25.544Z","1.3.36":"2022-10-05T04:19:37.394Z","1.2.58":"2022-10-05T04:25:13.800Z","1.0.196":"2022-10-13T03:35:35.897Z","1.1.90":"2022-10-13T03:36:28.722Z","1.3.37":"2022-10-13T03:56:24.994Z","1.2.59":"2022-10-15T05:14:23.927Z","1.0.197":"2022-10-30T14:56:30.863Z","1.1.91":"2022-10-30T14:56:46.431Z","1.3.38":"2022-10-30T14:58:42.619Z","1.2.60":"2022-10-30T14:59:10.477Z","1.0.198":"2022-11-02T19:29:12.326Z","1.2.61":"2022-11-02T19:30:17.941Z","1.3.39":"2022-11-02T19:30:35.917Z","1.1.92":"2022-11-02T19:53:42.298Z","1.3.40":"2022-12-22T05:55:32.217Z","1.0.199":"2022-12-22T21:45:09.010Z","1.1.93":"2022-12-22T21:45:31.684Z","1.2.62":"2022-12-22T21:46:50.329Z","1.0.200":"2022-12-30T15:18:02.892Z","1.1.94":"2022-12-30T15:18:28.653Z","1.3.41":"2022-12-30T15:19:20.632Z","1.2.63":"2022-12-30T15:19:45.228Z","1.0.201":"2023-01-10T22:49:16.932Z","1.3.42":"2023-01-10T22:49:44.780Z","1.2.64":"2023-01-10T22:50:20.072Z","1.1.95":"2023-01-10T23:18:38.847Z","1.0.202":"2023-01-11T05:34:48.543Z","1.1.96":"2023-01-11T05:35:22.118Z","1.2.65":"2023-01-11T05:36:44.815Z","1.3.43":"2023-01-21T03:21:39.468Z","1.1.97":"2023-04-29T04:58:06.658Z","1.3.44":"2023-04-29T04:58:18.635Z","1.2.66":"2023-04-29T04:59:17.838Z","1.0.203":"2023-04-29T05:02:10.825Z","1.3.46":"2023-09-12T02:45:30.492Z","1.3.47":"2023-09-13T00:08:37.369Z","1.3.48":"2023-09-13T07:45:08.839Z","1.3.49":"2023-12-20T08:48:42.033Z","1.3.50":"2024-04-24T02:38:45.047Z"},"maintainers":[{"name":"m.oppitz","email":"npmjs@martinoppitz.com"}],"description":"This CLI brings along all required tools to serve, test and build multi framework SPAs","homepage":"https://leanupjs.org","repository":{"type":"git","url":"git+https://github.com/leanupjs/leanup.git"},"author":{"name":"Martin Oppitz","email":"npmjs@martinoppitz.com"},"bugs":{"url":"https://github.com/leanupjs/leanup/issues"},"license":"Apache-2.0","readme":"<p style=\"text-align: center; background: white;\">\n  <a href=\"https://leanupjs.org\">\n    <img src=\"https://leanupjs.org/assets/logo.svg\" height=\"100\">\n  </a><br>\n  <h2 style=\"text-align: center;\">\n    <cite><b>Make things pure</b> ... to become lean.</cite>\n  </h2>\n</p>\n<!-- <iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/du_BnIZzEKs\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"true\"></iframe> -->\n<hr>\n\n[![downloads][downloads]][downloads-url]\n[![npm][npm]][npm-url]\n[![license][license]][license-url]\n\n[![dependencies][dependencies]][dependencies-url]\n[![devDependencies][devdependencies]][devdependencies-url]\n[![peerDependencies][peerdependencies]][peerdependencies-url]\n[![optionalDependencies][optionaldependencies]][optionaldependencies-url]\n\n[![vulnerabilities][vulnerabilities]][vulnerabilities-url]\n[![install-size][install-size]][install-size-url]\n\n[![lernajs][lernajs]][lernajs-url]\n[![prettier][prettier]][prettier-url]\n\n[leanup]: https://leanupjs.org/assets/logo.svg\n[leanup-url]: https://leanupjs.org\n[downloads]: https://img.shields.io/npm/dt/@leanup/cli.svg\n[downloads-url]: https://npmcharts.com/compare/@leanup/cli\n[npm]: https://img.shields.io/npm/v/@leanup/cli\n[npm-url]: https://www.npmjs.com/package/@leanup/cli\n[license]: https://img.shields.io/npm/l/@leanup/cli\n[license-url]: https://github.com/leanupjs/leanup/blob/master/LICENSE\n[dependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2\n[dependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2\n[devdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=dev\n[devdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=dev\n[peerdependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=peer\n[peerdependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=peer\n[optionaldependencies]: https://status.david-dm.org/gh/leanupjs/leanup.svg?path=packages/cli/core&ref=release/1.2&type=optional\n[optionaldependencies-url]: https://david-dm.org/leanupjs/leanup?path=packages/cli/core&ref=release/1.2&type=optional\n[vulnerabilities]: https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli\n[vulnerabilities-url]: https://snyk.io/test/npm/@leanup/cli\n[install-size]: https://packagephobia.now.sh/badge?p=@leanup/cli@next\n[install-size-url]: https://packagephobia.now.sh/result?p=@leanup/cli@next\n[lernajs]: https://img.shields.io/badge/managed%20with-lerna-blueviolet\n[lernajs-url]: https://lerna.js.org\n[prettier]: https://img.shields.io/badge/code_style-prettier-ff69b4.svg\n[prettier-url]: https://prettier.io\n\n<h1>leanup<sup style=\"color: grey; font-size: 75%\"> CLI</sup></h1>\n\nThe **`@leanup` CLI** contains all required popular tools in there minimal default, transparent and extensible configuration to develop JavaScript/TypeScript web applications.\n\n- [Motivation](#motivation)\n- [Principles](#principles)\n- [Demo](#demo)\n- [Installation](#installation)\n- [Features](#features)\n- [Structure](#structure)\n  - [Frameworks](#frameworks)\n  - [Extensions](#extensions)\n  - [Thinks](#thinks)\n- [Replaced environment variables](#replaced-environment-variables)\n- [Dependencies](#dependencies)\n- [Peer dependencies](#peer-dependencies)\n- [Optional tools](#optional-tools)\n\n## Motivation\n\n- Learnability\n- Controllability\n- Universality\n- Flexibility\n- Scalability\n- Durability\n- Transparency\n\n## Principles\n\n- convention over configuration\n- pure commands under the hood\n- don't repeat yourself\n- following the generic instead of the influenced way\n- keep the dependencies always up to date\n\n## Demo\n\nThere are some working examples:\n\n- [https://github.modevel.de/poc/](https://github.modevel.de/poc/)\n- [PoC - Flexible web application architecture](https://github.com/martinoppitz/poc-flexible-web-application-architecture#readme)\n- [Hello World - Comparison](https://github.com/martinoppitz/hello-world-comparison#readme)\n\n## Installation\n\nTo install the **`@leanup` CLI** execute the following command:\n\n> `npm install @leanup/cli typescript --save-dev`\n\nAnd a non-framework or framework strategy must also be selected:\n\nNon-framework:\n\n> `npm install @leanup/cli-vanilla --save-dev`\n\nOr with framework:\n\n`npm install @leanup/cli-angular --save-dev` or<br>\n`npm install @leanup/cli-angularjs --save-dev` or<br>\n`npm install @leanup/cli-aurelia --save-dev` or<br>\n`npm install @leanup/cli-inferno --save-dev` or<br>\n`npm install @leanup/cli-lit-element --save-dev` or<br>\n`npm install @leanup/cli-preact --save-dev` or<br>\n`npm install @leanup/cli-react --save-dev` or<br>\n`npm install @leanup/cli-svelte --save-dev` or<br>\n`npm install @leanup/cli-vue --save-dev` or<br>\n`npm install @leanup/cli-vue3 --save-dev`\n\nInstall the peer dependencies `chromedriver`, `geckodriver` or `selenium-server` in the required version, if you need that features.\n\n- `npm install chromedriver --save-dev`\n- `npm install geckodriver --save-dev`\n- `npm install selenium-server--save-dev`\n\n## Features\n\n| Tool/Technology  |    Description    | Status | Note                       | Rating                                                                                                                                               |\n| ---------------- | :---------------: | :----: | :------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [TypeScript]     |     Language      |   ✔️    | ready                      | [![typescript](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                            |\n| [Webpack]        |      Bundler      |   ✔️    | ready                      | [![webpack](https://snyk.io/advisor/npm-package/webpack/badge.svg)](https://snyk.io/advisor/npm-package/webpack)                                     |\n| [Snowpack]       |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/snowpack/badge.svg)](https://snyk.io/advisor/npm-package/snowpack)                                   |\n| [Vite]           |      Bundler      |   ⌛    | in progress                | [![webpack](https://snyk.io/advisor/npm-package/vite/badge.svg)](https://snyk.io/advisor/npm-package/vite)                                           |\n| [ESBuild]        |    Transpiler     |   ✔️    | ready                      | [![esbuild](https://snyk.io/advisor/npm-package/esbuild/badge.svg)](https://snyk.io/advisor/npm-package/esbuild)                                     |\n| [Babel]          |    Transpiler     |   ✔️    | ready                      | [![@babel/core](https://snyk.io/advisor/npm-package/@babel/core/badge.svg)](https://snyk.io/advisor/npm-package/@babel/core)                         |\n| [Mocha]          | Unit-Test-Runner  |   ✔️    | ready                      | [![mocha](https://snyk.io/advisor/npm-package/mocha/badge.svg)](https://snyk.io/advisor/npm-package/mocha)                                           |\n| [Chai]           |     Assertion     |   ✔️    | ready                      | [![chai](https://snyk.io/advisor/npm-package/typescript/badge.svg)](https://snyk.io/advisor/npm-package/chai)                                        |\n| [Sinon]          |      Mocking      |   ✔️    | ready                      | [![sinon](https://snyk.io/advisor/npm-package/sinon/badge.svg)](https://snyk.io/advisor/npm-package/sinon)                                           |\n| [NYC]            |   Code-Coverage   |   ✔️    | ready                      | [![nyc](https://snyk.io/advisor/npm-package/nyc/badge.svg)](https://snyk.io/advisor/npm-package/nyc)                                                 |\n| [ESLint]         |   Code-Checker    |   ✔️    | ready                      | [![eslint](https://snyk.io/advisor/npm-package/eslint/badge.svg)](https://snyk.io/advisor/npm-package/eslint)                                        |\n| [Nightwatch.js]  |  E2E-Test-Runner  |   ✔️    | ready                      | [![nightwatch](https://snyk.io/advisor/npm-package/nightwatch/badge.svg)](https://snyk.io/advisor/npm-package/nightwatch)                            |\n| [Allsure]        |      Report       |   ✔️    | ready                      |\n| [Cucumber]       |        BDD        |   ✔️    | ready                      | [![cucumber](https://snyk.io/advisor/npm-package/cucumber/badge.svg)](https://snyk.io/advisor/npm-package/cucumber)                                  |\n| [robotframework] |        BDD        |   ⌛    | will be evaluated          |                                                                                                                                                      |\n| [Storybook]      |   Documentation   |   ⌛    | in progress                | [![storybook](https://snyk.io/advisor/npm-package/storybook/badge.svg)](https://snyk.io/advisor/npm-package/storybook)                               |\n| [OpenAPI]        |        API        |   ✔️    | ready                      |                                                                                                                                                      |\n| [GraphQL]        |        API        |   ✔️    | ready                      | [![graphql](https://snyk.io/advisor/npm-package/graphql/badge.svg)](https://snyk.io/advisor/npm-package/graphql)                                     |\n| [Workbox]        |        PWA        |   ✔️    | ready                      | [![workbox](https://snyk.io/advisor/npm-package/workbox/badge.svg)](https://snyk.io/advisor/npm-package/workbox)                                     |\n| [Lerna]          |     Mono-Repo     |   ✔️    | ready                      | [![lerna](https://snyk.io/advisor/npm-package/lerna/badge.svg)](https://snyk.io/advisor/npm-package/lerna)                                           |\n| [Ant-Design]     |   Design-System   |   ✔️    | proved                     | [![antd](https://snyk.io/advisor/npm-package/antd/badge.svg)](https://snyk.io/advisor/npm-package/antd)                                              |\n| [Bootstrap]      |   Design-System   |   ✔️    | proved                     | [![bootstrap](https://snyk.io/advisor/npm-package/bootstrap/badge.svg)](https://snyk.io/advisor/npm-package/bootstrap)                               |\n| [Material]       |   Design-System   |   ✔️    | proved                     | [![@material/textfield](https://snyk.io/advisor/npm-package/@material/textfield/badge.svg)](https://snyk.io/advisor/npm-package/@material/textfield) |\n| [Tailwindcss]    |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/tailwindcss/badge.svg)](https://snyk.io/advisor/npm-package/tailwindcss)                         |\n| [WindiCSS]       |   Design-System   |   ✔️    | proved                     | [![tailwindcss](https://snyk.io/advisor/npm-package/windicss/badge.svg)](https://snyk.io/advisor/npm-package/windicss)                               |\n| [Nexus IQ]       | Vulnerabiliy-Gate |   ✔️    | ready                      |                                                                                                                                                      |\n| [Less]           |        CSS        |   ✔️    | ready                      | [![less](https://snyk.io/advisor/npm-package/less/badge.svg)](https://snyk.io/advisor/npm-package/less)                                              |\n| [Sass]           |        CSS        |   ✔️    | ready                      | [![sass](https://snyk.io/advisor/npm-package/sass/badge.svg)](https://snyk.io/advisor/npm-package/sass)                                              |\n| [PostCSS]        |        CSS        |   ✔️    | ready                      | [![postcss](https://snyk.io/advisor/npm-package/postcss/badge.svg)](https://snyk.io/advisor/npm-package/postcss)                                     |\n| [TSArch]         |   Architecture    |   ⌛    | in progress                | [![hint](https://snyk.io/advisor/npm-package/tsarch/badge.svg)](https://snyk.io/advisor/npm-package/tsarch)                                          |\n| [Webhint]        |      Webhint      |   ✔️    | moved \\*\\*\\*               | [![hint](https://snyk.io/advisor/npm-package/hint/badge.svg)](https://snyk.io/advisor/npm-package/hint)                                              |\n| [TestCafe]       |  E2E-Test-Runner  |   ⌛    | will be evaluated \\*\\*\\*\\* | [![testcafe](https://snyk.io/advisor/npm-package/testcafe/badge.svg)](https://snyk.io/advisor/npm-package/typescript)                                |\n| [TSLint]         |   Code-Checker    |   ❌    | removed \\*\\*               | [![tslint](https://snyk.io/advisor/npm-package/tslint/badge.svg)](https://snyk.io/advisor/npm-package/tslint)                                        |\n| [Cypress]        |  E2E-Test-Runner  |   ❌    | excluded \\*                | [![cypress](https://snyk.io/advisor/npm-package/cypress/badge.svg)](https://snyk.io/advisor/npm-package/cypress)                                     |\n\n> \\*\n> Arguments agains [Cypress]:\n>\n> - reinvent wheel\n>   - detect css selectors\n>   - BDD test syntax\n>   - principals\n> - large tooling\n> - a lot of binaries\n> - many dependencies\n> - ci integration vs selenium hub\n>\n> It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.\n\n> \\*\\* TSLint is deprecated.\n\n> \\*\\*\\* Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like [VSCode webhint](https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint).\n\n> \\*\\*\\*\\* [TestCafe] The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.\n\n## Structure\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\n- [`@leanup/cli`](https://www.npmjs.com/package/@leanup/cli) ✔️\n- [`@leanup/cli-vanilla`](https://www.npmjs.com/package/@leanup/cli-vanilla) (optional) ✔️ [![vulnerabilities of @leanup/cli-vanilla](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vanilla)](https://snyk.io/test/npm/@leanup/cli-vanilla)\n\n### Frameworks\n\nVanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.\n\nThe selection of the following frameworks depends in parts on the following references:\n\n- [report](https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results#js-framework-essential),\n- [benchmark](https://krausest.github.io/js-framework-benchmark/2020/table_chrome_80.html) and\n- [survey](https://2019.stateofjs.com/front-end-frameworks)\n\nCurrently the following framework extensions are available:\n\n- [`@leanup/cli-angular`](https://www.npmjs.com/package/@leanup/cli-angular) ✔️ [![vulnerabilities of @leanup/cli-angular](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angular)](https://snyk.io/test/npm/@leanup/cli-angular)\n- [`@leanup/cli-angularjs`](https://www.npmjs.com/package/@leanup/cli-angularjs) ✔️ [![vulnerabilities of @leanup/cli-angularjs](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-angularjs)](https://snyk.io/test/npm/@leanup/cli-angularjs)\n- [`@leanup/cli-aurelia`](https://www.npmjs.com/package/@leanup/cli-aurelia) ✔️ [![vulnerabilities of @leanup/cli-aurelia](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-aurelia)](https://snyk.io/test/npm/@leanup/cli-aurelia)\n- [`@leanup/cli-inferno`](https://www.npmjs.com/package/@leanup/cli-inferno) ✔️ [![vulnerabilities of @leanup/cli-inferno](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-inferno)](https://snyk.io/test/npm/@leanup/cli-inferno)\n- [`@leanup/cli-lit-element`](https://www.npmjs.com/package/@leanup/cli-lit-element) ✔️ [![vulnerabilities of @leanup/cli-lit-element](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-lit-element)](https://snyk.io/test/npm/@leanup/cli-lit-element)\n- [`@leanup/cli-preact`](https://www.npmjs.com/package/@leanup/cli-preact) ✔️ [![vulnerabilities of @leanup/cli-preact](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-preact)](https://snyk.io/test/npm/@leanup/cli-preact)\n- [`@leanup/cli-react`](https://www.npmjs.com/package/@leanup/cli-react) ✔️ [![vulnerabilities of @leanup/cli-react](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-react)](https://snyk.io/test/npm/@leanup/cli-react)\n- [`@leanup/cli-svelte`](https://www.npmjs.com/package/@leanup/cli-svelte) ✔️ [![vulnerabilities of @leanup/cli-svelte](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-svelte)](https://snyk.io/test/npm/@leanup/cli-svelte)\n- [`@leanup/cli-vue`](https://www.npmjs.com/package/@leanup/cli-vue) ✔️ [![vulnerabilities of @leanup/cli-vue](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue)](https://snyk.io/test/npm/@leanup/cli-vue)\n- [`@leanup/cli-vue3`](https://www.npmjs.com/package/@leanup/cli-vue3) ✔️ (RC) [![vulnerabilities of @leanup/cli-vue3](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-vue3)](https://snyk.io/test/npm/@leanup/cli-vue3)\n\n### Extensions\n\nA separate package contains some nice but not required addons for webpack.\n\n- [`@leanup/cli-addons`](https://www.npmjs.com/package/@leanup/cli-addons) ✔️ [![vulnerabilities of @leanup/cli-addons](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-addons)](https://snyk.io/test/npm/@leanup/cli-addons)\n- [`@leanup/cli-cucumber`](https://www.npmjs.com/package/@leanup/cli-cucumber) ✔️ [![vulnerabilities of @leanup/cli-cucumber](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-cucumber)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-graphql`](https://www.npmjs.com/package/@leanup/cli-graphql) ✔️ [![vulnerabilities of @leanup/cli-graphql](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-graphql)](https://snyk.io/test/npm/@leanup/cli-cucumber)\n- [`@leanup/cli-pwa`](https://www.npmjs.com/package/@leanup/cli-pwa) ✔️ [![vulnerabilities of @leanup/cli-pwa](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-pwa)](https://snyk.io/test/npm/@leanup/cli-pwa)\n- [`@leanup/cli-webhint`](https://www.npmjs.com/package/@leanup/cli-webhint) ✔️ [![vulnerabilities of @leanup/cli-webhint](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/cli-webhint)](https://snyk.io/test/npm/@leanup/cli-webhint)\n\n### Thinks\n\nThere a separate packages for important application features.\n\n- [`@leanup/git-hooks`](https://www.npmjs.com/package/@leanup/git-hooks) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)\n- [`@leanup/form`](https://www.npmjs.com/package/@leanup/form) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/form)](https://snyk.io/test/npm/@leanup/form)\n- [`@leanup/lib`](https://www.npmjs.com/package/@leanup/lib) ✔️ [![vulnerabilities of autoprefixer](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/lib)](https://snyk.io/test/npm/@leanup/lib)\n- @leanup/ul ⌛\n\n## Replaced environment variables\n\nThe following variable names are replaced by the values from `package.json` file in the bundle:\n\n| Name         | Description                                                       |\n| ------------ | ----------------------------------------------------------------- |\n| APP_AUTHER   | The value of the `author` attribute from the package.json file.   |\n| APP_HOMEPAGE | The value of the `homepage` attribute from the package.json file. |\n| APP_NAME     | The value of the `name` attribute from the package.json file.     |\n| APP_VERSION  | The value of the `version` attribute from the package.json file.  |\n| NODE_ENV     | The value of the `version` attribute from the package.json file.  |\n\n**For example:**\n\n`package.json`:\n\n```json\n{\n  \"name\": \"@scope/my-app\",\n  \"version\": \"1.1.0\",\n  \"description\": \"This CLI brings along all required tools to serve, test and build multi framework SPAs\",\n  \"author\": \"Martin Oppitz <npmjs@martinoppitz.com>\",\n  \"homepage\": \"https://leanupjs.org\",\n  ...\n```\n\nApp code:\n\n```js\nconst APP_METADATA = {\n  author: '$$APP_AUTHER$$',\n  homepage: '$$APP_HOMEPAGE$$',\n  name: '$$APP_NAME$$',\n  version: '$$APP_VERSION$$',\n  environment: '$$NODE_ENV$$', // development | test | production ⌛\n};\nconsole.log(APP_METADATA);\n```\n\n<!-- | $1 | [![install size of $1](https://packagephobia.now.sh/badge?p=$1)](https://packagephobia.now.sh/result?p=$1) | [![vulnerabilities of $1](https://img.shields.io/snyk/vulnerabilities/npm/$1)](https://snyk.io/test/npm/$1) | -->\n\n## Dependencies\n\n|                                 Package |                                                                                                                                                                                                                      Size | Vulnerabilities                                                                                                                                                                                                            |\n| --------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n|                             @babel/core |                                                                                     [![install size of @babel/core](https://packagephobia.now.sh/badge?p=@babel/core)](https://packagephobia.now.sh/result?p=@babel/core) | [![vulnerabilities of @babel/core](https://img.shields.io/snyk/vulnerabilities/npm/@babel/core)](https://snyk.io/test/npm/@babel/core)                                                                                     |\n| @babel/plugin-proposal-class-properties | [![install size of @babel/plugin-proposal-class-properties](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-class-properties)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-class-properties) | [![vulnerabilities of @babel/plugin-proposal-class-properties](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-class-properties)](https://snyk.io/test/npm/@babel/plugin-proposal-class-properties) |\n|       @babel/plugin-proposal-decorators |                   [![install size of @babel/plugin-proposal-decorators](https://packagephobia.now.sh/badge?p=@babel/plugin-proposal-decorators)](https://packagephobia.now.sh/result?p=@babel/plugin-proposal-decorators) | [![vulnerabilities of @babel/plugin-proposal-decorators](https://img.shields.io/snyk/vulnerabilities/npm/@babel/plugin-proposal-decorators)](https://snyk.io/test/npm/@babel/plugin-proposal-decorators)                   |\n|                       @babel/preset-env |                                                                   [![install size of @babel/preset-env](https://packagephobia.now.sh/badge?p=@babel/preset-env)](https://packagephobia.now.sh/result?p=@babel/preset-env) | [![vulnerabilities of @babel/preset-env](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-env)](https://snyk.io/test/npm/@babel/preset-env)                                                                   |\n|                @babel/preset-typescript |                                              [![install size of @babel/preset-typescript](https://packagephobia.now.sh/badge?p=@babel/preset-typescript)](https://packagephobia.now.sh/result?p=@babel/preset-typescript) | [![vulnerabilities of @babel/preset-typescript](https://img.shields.io/snyk/vulnerabilities/npm/@babel/preset-typescript)](https://snyk.io/test/npm/@babel/preset-typescript)                                              |\n|                             @types/node |                                                                                     [![install size of @types/node](https://packagephobia.now.sh/badge?p=@types/node)](https://packagephobia.now.sh/result?p=@types/node) | [![vulnerabilities of @types/node](https://img.shields.io/snyk/vulnerabilities/npm/@types/node)](https://snyk.io/test/npm/@types/node)                                                                                     |\n|                            babel-loader |                                                                                  [![install size of babel-loader](https://packagephobia.now.sh/badge?p=babel-loader)](https://packagephobia.now.sh/result?p=babel-loader) | [![vulnerabilities of babel-loader](https://img.shields.io/snyk/vulnerabilities/npm/babel-loader)](https://snyk.io/test/npm/babel-loader)                                                                                  |\n|                                   chalk |                                                                                                        [![install size of chai](https://packagephobia.now.sh/badge?p=chalk)](https://packagephobia.now.sh/result?p=chalk) | [![vulnerabilities of chalk](https://img.shields.io/snyk/vulnerabilities/npm/chalk)](https://snyk.io/test/npm/chalk)                                                                                                       |\n|                               commander |                                                                                           [![install size of commander](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) | [![vulnerabilities of commander](https://img.shields.io/snyk/vulnerabilities/npm/commander)](https://snyk.io/test/npm/commander)                                                                                           |\n|             copy-modules-webpack-plugin |                                     [![install size of copy-modules-webpack-plugin](https://packagephobia.now.sh/badge?p=copy-modules-webpack-plugin)](https://packagephobia.now.sh/result?p=copy-modules-webpack-plugin) | [![vulnerabilities of copy-modules-webpack-plugin](https://img.shields.io/snyk/vulnerabilities/npm/copy-modules-webpack-plugin)](https://snyk.io/test/npm/copy-modules-webpack-plugin)                                     |\n|                              css-loader |                                                                                        [![install size of css-loader](https://packagephobia.now.sh/badge?p=css-loader)](https://packagephobia.now.sh/result?p=css-loader) | [![vulnerabilities of css-loader](https://img.shields.io/snyk/vulnerabilities/npm/css-loader)](https://snyk.io/test/npm/css-loader)                                                                                        |\n|                          esbuild-loader |                                                                            [![install size of esbuild-loader](https://packagephobia.now.sh/badge?p=esbuild-loader)](https://packagephobia.now.sh/result?p=esbuild-loader) | [![vulnerabilities of esbuild-loader](https://img.shields.io/snyk/vulnerabilities/npm/esbuild-loader)](https://snyk.io/test/npm/esbuild-loader)                                                                            |\n|                             file-loader |                                                                                     [![install size of file-loader](https://packagephobia.now.sh/badge?p=file-loader)](https://packagephobia.now.sh/result?p=file-loader) | [![vulnerabilities of file-loader](https://img.shields.io/snyk/vulnerabilities/npm/file-loader)](https://snyk.io/test/npm/file-loader)                                                                                     |\n|                                    less |                                                                                                          [![install size of less](https://packagephobia.now.sh/badge?p=less)](https://packagephobia.now.sh/result?p=less) | [![vulnerabilities of less](https://img.shields.io/snyk/vulnerabilities/npm/less)](https://snyk.io/test/npm/less)                                                                                                          |\n|                             less-loader |                                                                                     [![install size of less-loader](https://packagephobia.now.sh/badge?p=less-loader)](https://packagephobia.now.sh/result?p=less-loader) | [![vulnerabilities of less-loader](https://img.shields.io/snyk/vulnerabilities/npm/less-loader)](https://snyk.io/test/npm/less-loader)                                                                                     |\n|                                 postcss |                                                                                                 [![install size of postcss](https://packagephobia.now.sh/badge?p=postcss)](https://packagephobia.now.sh/result?p=postcss) | [![vulnerabilities of postcss](https://img.shields.io/snyk/vulnerabilities/npm/postcss)](https://snyk.io/test/npm/postcss)                                                                                                 |\n|                          postcss-loader |                                                                            [![install size of postcss-loader](https://packagephobia.now.sh/badge?p=postcss-loader)](https://packagephobia.now.sh/result?p=postcss-loader) | [![vulnerabilities of postcss-loader](https://img.shields.io/snyk/vulnerabilities/npm/postcss-loader)](https://snyk.io/test/npm/postcss-loader)                                                                            |\n|                                    sass |                                                                                                          [![install size of sass](https://packagephobia.now.sh/badge?p=sass)](https://packagephobia.now.sh/result?p=sass) | [![vulnerabilities of sass](https://img.shields.io/snyk/vulnerabilities/npm/sass)](https://snyk.io/test/npm/sass)                                                                                                          |\n|                             sass-loader |                                                                                     [![install size of sass-loader](https://packagephobia.now.sh/badge?p=sass-loader)](https://packagephobia.now.sh/result?p=sass-loader) | [![vulnerabilities of sass-loader](https://img.shields.io/snyk/vulnerabilities/npm/sass-loader)](https://snyk.io/test/npm/sass-loader)                                                                                     |\n|                   string-replace-loader |                                                       [![install size of string-replace-loader](https://packagephobia.now.sh/badge?p=string-replace-loader)](https://packagephobia.now.sh/result?p=string-replace-loader) | [![vulnerabilities of string-replace-loader](https://img.shields.io/snyk/vulnerabilities/npm/string-replace-loader)](https://snyk.io/test/npm/string-replace-loader)                                                       |\n|                            style-loader |                                                                                  [![install size of style-loader](https://packagephobia.now.sh/badge?p=style-loader)](https://packagephobia.now.sh/result?p=style-loader) | [![vulnerabilities of fibers](https://img.shields.io/snyk/vulnerabilities/npm/style-loader)](https://snyk.io/test/npm/style-loader)                                                                                        |\n|                                 webpack |                                                                                                 [![install size of webpack](https://packagephobia.now.sh/badge?p=webpack)](https://packagephobia.now.sh/result?p=webpack) | [![vulnerabilities of webpack](https://img.shields.io/snyk/vulnerabilities/npm/webpack)](https://snyk.io/test/npm/webpack)                                                                                                 |\n|                             webpack-cli |                                                                                     [![install size of webpack-cli](https://packagephobia.now.sh/badge?p=webpack-cli)](https://packagephobia.now.sh/result?p=webpack-cli) | [![vulnerabilities of webpack-cli](https://img.shields.io/snyk/vulnerabilities/npm/webpack-cli)](https://snyk.io/test/npm/webpack-cli)                                                                                     |\n|                      webpack-dev-server |                                                                [![install size of webpack-dev-server](https://packagephobia.now.sh/badge?p=webpack-dev-server)](https://packagephobia.now.sh/result?p=webpack-dev-server) | [![vulnerabilities of webpack-dev-server](https://img.shields.io/snyk/vulnerabilities/npm/webpack-dev-server)](https://snyk.io/test/npm/webpack-dev-server)                                                                |\n\n## Peer dependencies\n\n|         Package |                                                                                                                                              Size |                                                                  Vulnerabilities                                                                   |\n| --------------: | ------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|    chromedriver |          [![install size of chromedriver](https://packagephobia.now.sh/badge?p=chromedriver)](https://packagephobia.now.sh/result?p=chromedriver) |     [![vulnerabilities of chromedriver](https://img.shields.io/snyk/vulnerabilities/npm/chromedriver)](https://snyk.io/test/npm/chromedriver)      |\n|     geckodriver |             [![install size of geckodriver](https://packagephobia.now.sh/badge?p=geckodriver)](https://packagephobia.now.sh/result?p=geckodriver) |       [![vulnerabilities of geckodriver](https://img.shields.io/snyk/vulnerabilities/npm/geckodriver)](https://snyk.io/test/npm/geckodriver)       |\n|         graphql |                         [![install size of graphql](https://packagephobia.now.sh/badge?p=graphql)](https://packagephobia.now.sh/result?p=graphql) |             [![vulnerabilities of graphql](https://img.shields.io/snyk/vulnerabilities/npm/graphql)](https://snyk.io/test/npm/graphql)             |\n| selenium-server | [![install size of selenium-server](https://packagephobia.now.sh/badge?p=selenium-server)](https://packagephobia.now.sh/result?p=selenium-server) | [![vulnerabilities of selenium-server](https://img.shields.io/snyk/vulnerabilities/npm/selenium-server)](https://snyk.io/test/npm/selenium-server) |\n|      typescript |                [![install size of typescript](https://packagephobia.now.sh/badge?p=typescript)](https://packagephobia.now.sh/result?p=typescript) |        [![vulnerabilities of typescript](https://img.shields.io/snyk/vulnerabilities/npm/typescript)](https://snyk.io/test/npm/typescript)         |\n\n## Optional tools\n\n|            Package |                                                                                                                                                       Size |                                                                       Vulnerabilities                                                                       |\n| -----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|  @leanup/git-hooks |    [![install size of @leanup/git-hooks](https://packagephobia.now.sh/badge?p=@leanup/git-hooks)](https://packagephobia.now.sh/result?p=@leanup/git-hooks) |  [![vulnerabilities of @leanup/git-hooks](https://img.shields.io/snyk/vulnerabilities/npm/@leanup/git-hooks)](https://snyk.io/test/npm/@leanup/git-hooks)   |\n| allure-commandline | [![install size of allure-commandline](https://packagephobia.now.sh/badge?p=allure-commandline)](https://packagephobia.now.sh/result?p=allure-commandline) | [![vulnerabilities of allure-commandline](https://img.shields.io/snyk/vulnerabilities/npm/allure-commandline)](https://snyk.io/test/npm/allure-commandline) |\n|              lerna |                                        [![install size of lerna](https://packagephobia.now.sh/badge?p=lerna)](https://packagephobia.now.sh/result?p=lerna) |                    [![vulnerabilities of lerna](https://img.shields.io/snyk/vulnerabilities/npm/lerna)](https://snyk.io/test/npm/lerna)                     |\n|        workbox-cli |                      [![install size of workbox-cli](https://packagephobia.now.sh/badge?p=workbox-cli)](https://packagephobia.now.sh/result?p=workbox-cli) |           [![vulnerabilities of workbox-cli](https://img.shields.io/snyk/vulnerabilities/npm/workbox-cli)](https://snyk.io/test/npm/workbox-cli)            |\n\n[babel]: https://babeljs.io\n[typescript]: https://typescriptlang.org\n[webpack]: https://webpack.js.org\n[mocha]: https://mochajs.org\n[chai]: https://www.chaijs.com\n[sinon]: https://sinonjs.org\n[nyc]: https://istanbul.js.org\n[storybook]: https://storybook.js.org\n[svelte devtools]: https://github.com/RedHatter/svelte-devtools\n[nightwatch.js]: https://nightwatchjs.org\n[tslint]: https://palantir.github.io/tslint\n[eslint]: https://eslint.org\n[graphql]: https://graphql.org\n[sass]: https://sass-lang.com\n[less]: http://lesscss.org\n[lerna]: https://lerna.js.org\n[workbox]: https://developers.google.com/web/tools/workbox\n[ant-design]: https://ant.design\n[allsure]: http://allure.qatools.ru\n[bootstrap]: https://getbootstrap.com\n[material]: https://material.io\n[cucumber]: https://cucumber.io\n[cypress]: https://www.cypress.io\n[webhint]: https://www.webhint.io\n[testcafe]: https://devexpress.github.io/testcafe/\n[robotframework]: https://robotframework.org\n[tailwindcss]: https://tailwindcss.com\n[postcss]: https://postcss.org\n[esbuild]: https://esbuild.github.io\n[snowpack]: https://www.snowpack.dev/\n[vite]: https://vitejs.dev/\n[openapi]: https://openapis.org\n[nexus iq]: https://blog.sonatype.com/using-nexus-iq-server-with-webpack\n[tsarch]: https://github.com/MaibornWolff/ts-arch\n[windicss]: https://windicss.org\n","readmeFilename":"README.md","keywords":["eslint","esbuild","vite","webpack","angular","angularjs","aurelia","inferno","react","preact","svelte","vue","vue3","mocha","nyc","cucumber","sinon","prettier","nightwatch","less","sass","scss","typescript","cli","spa","pwa","leanupjs","compiler","transpiler","graphql","postcss","pwa","hint","workbox","mono-repo","lerna"]}